gpt4 book ai didi

java - 升级到 Jetty 9.3 后 header 解析错误

转载 作者:搜寻专家 更新时间:2023-10-31 08:09:47 26 4
gpt4 key购买 nike

当我将 Jetty 发行版从 9.2 更改为 9.3 时遇到问题。在 9.2 下,我的应用程序运行完美,但是当运行相同的 war 文件并从同一客户端连接时,我在 9.3 下运行时收到以下错误消息:

015-08-30 14:55:32.174:WARN:oejh.HttpParser:qtp1100439041-12: Illegal character 0x20 in state=HEADER_IN_NAME for buffer HeapByteBuffer@26dab36[p=62,l=654,c=8192,r=592]={POST /api/v1/time...0.1:8080\r\nKey <<<Info Header: ...erica/Toronto"}>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}

2015-08-30 14:55:32.175:WARN:oejh.HttpParser:qtp1100439041-12: bad HTTP parsed: 400 Illegal character 0x20 for HttpChannelOverHttp@6765bf81{r=0,c=false,a=IDLE,uri=-}

据我了解, header 中存在非法字符,但是为什么一个版本会抛出此错误而另一个版本却不会?

此外,我正在使用 Apache httpclient 4.4.1 发送数据。

最佳答案

从 Jetty 9.2 升级到 9.3 意味着您进入了 HTTP/1.1 更新规范和 rfc 的新世界,以及新的 HTTP/2 要求,甚至包括对 HTTP/1.1 的更改以支持 HTTP/2 升级 (h2c) .

Jetty 9.2 遵循 RFC2616(现已废弃:RFC7230、RFC7231、RFC7232、RFC7233、RFC7234、RFC7235,更新:RFC2817、RFC5785、RFC6266、RFC6585)

Jetty 9.3 遵循对古老的(从 1999 年开始!)RFC2616 规范的更新。许多过去有效的东西不再有效。我们还在 Jetty 9.3 中放弃了对 HTTP/0.9 的支持

整理了 HTTP/1.1 的许多部分以利用更新后的 RFC,其中一些可能对您有所帮助。

查看规范,RFC7230: Section 3.2 - Header Fields ,您会看到 header 字段声明为...

 header-field   = field-name ":" OWS field-value OWS

field-name = token
field-value = *( field-content / obs-fold )
field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
field-vchar = VCHAR / obs-text

obs-fold = CRLF 1*( SP / HTAB )
; obsolete line folding
; see Section 3.2.4

使用 tokenRFC7230: Appendix B - Collected ABNF 中定义作为...

tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." /
"^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA
token = 1*tchar

这意味着 "Info Header:" 中的 ""(空格)根据规范无效。

如果它是 "Info-Header" 或更准确地遵循规范为 "X-Info-Header" 会更好(以免与规范保留 header 名称)

关于java - 升级到 Jetty 9.3 后 header 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32300109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com