V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JinTianYi456
V2EX  ›  Java

请求头里的 val 部分有个 DEL 字符,导致 400 Bad Request,想问下具体的源码是在哪?

  •  1
     
  •   JinTianYi456 · 2023-12-07 17:31:06 +08:00 · 1025 次点击
    这是一个创建于 382 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. spring-boot-starter-web 先启动一个应用
    2. 另一个应用,使用 spring-boot-starter-webflux ,来请求
    WebClient webClient = WebClient.create();
    
    ResponseEntity<String> res = webClient
            .get()
            .uri("http:// 1 中的 url")
            .header("a", "\u007F") // code point 127
            .retrieve().toEntity(String.class).block();
    System.out.println(res.getStatusCodeValue());
    System.out.println(res.getBody());
    

    另一个问题,如果换成这些,接收到的会变成 ? (code point 63) , 想问下这个又是哪里对它做了处理

    第 1 条附言  ·  2023-12-07 18:10:21 +08:00
    如果换成 `文` 这些,接收到的会变成 `?`
    5 条回复    2023-12-08 12:36:15 +08:00
    yolee599
        1
    yolee599  
       2023-12-07 18:21:50 +08:00   ❤️ 1
    大概率是 print 的问题,你直接打印 hex 应该是对得上的
    JinTianYi456
        2
    JinTianYi456  
    OP
       2023-12-07 18:42:47 +08:00
    @yolee599 #1 (一)感谢错了 (二)我用的是 code point 输出
    guyeu
        3
    guyeu  
       2023-12-08 00:17:46 +08:00 via iPhone
    According to RFC2616, only ascii-printable characters are valid for HTTP header values.
    JinTianYi456
        4
    JinTianYi456  
    OP
       2023-12-08 10:07:19 +08:00
    @guyeu #3 看过类似的 spec ,但我问的是源码处理的地方。(我要找到它 报错/重写 的地方)

    类似这样: https://github.com/square/okhttp/blob/okhttp_3.14.x/okhttp/src/main/java/okhttp3/Headers.java#L279
    JinTianYi456
        5
    JinTianYi456  
    OP
       2023-12-08 12:36:15 +08:00
    @guyeu #3 Thanks, but that spec was obsoleted several times, ultimately ending up with https://datatracker.ietf.org/doc/html/rfc9112
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:13 · PVG 00:13 · LAX 08:13 · JFK 11:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.