JinTianYi456
V2EX  ›  Java

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

  •  1
     
  •   JinTianYi456 · Dec 7, 2023 · 3738 views
    This topic created in 1065 days ago, the information mentioned may be changed or developed.
    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) , 想问下这个又是哪里对它做了处理

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

    类似这样: https://github.com/square/okhttp/blob/okhttp_3.14.x/okhttp/src/main/java/okhttp3/Headers.java#L279
    JinTianYi456
    JinTianYi456
    OP
    Dec 8, 2023
    5
    @guyeu #3 Thanks, but that spec was obsoleted several times, ultimately ending up with https://datatracker.ietf.org/doc/html/rfc9112
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2177 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    ♥ Do have faith in what you're doing.