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

357 天前
 JinTianYi456
  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) , 想问下这个又是哪里对它做了处理

1007 次点击
所在节点    Java
5 条回复
yolee599
357 天前
大概率是 print 的问题,你直接打印 hex 应该是对得上的
JinTianYi456
357 天前
@yolee599 #1 (一)感谢错了 (二)我用的是 code point 输出
guyeu
357 天前
According to RFC2616, only ascii-printable characters are valid for HTTP header values.
JinTianYi456
356 天前
@guyeu #3 看过类似的 spec ,但我问的是源码处理的地方。(我要找到它 报错/重写 的地方)

类似这样: https://github.com/square/okhttp/blob/okhttp_3.14.x/okhttp/src/main/java/okhttp3/Headers.java#L279
JinTianYi456
356 天前
@guyeu #3 Thanks, but that spec was obsoleted several times, ultimately ending up with https://datatracker.ietf.org/doc/html/rfc9112

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/998436

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX