专业网站定制公司,wordpress商城付款,礼泉做网站,wordpress编辑器 填满windows的apipost发送请求后#xff0c;服务器响应了HTTP/1.1 404 Not Found#xff0c;但是apipost一直显示发送中。 linux上的curl也一样。 使用wireshark抓包发现收到了响应#xff0c;但是wireshark识别不了#xff08;图中是回应404后关闭了连接#xff09;#xff…windows的apipost发送请求后服务器响应了HTTP/1.1 404 Not Found但是apipost一直显示发送中。 linux上的curl也一样。 使用wireshark抓包发现收到了响应但是wireshark识别不了图中是回应404后关闭了连接 第一个报文是HTTP/1.1 404 Not Found响应但并没有识别出来wireshark认为是一个不完整的HTTP报文TCP segment of a reassembled PDU但HTTP实际上是完整的结尾带了两个\r\n0d 0a 0d 0a 第二个报文是服务器发送的FIN里面并没有应用层数据Len0 不清楚为什么认为这个HTTP报文不完整只能在服务器上手动增加了
FullHttpResponse resp new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND);
//netty服务器默认不包含CONTENT_LENGTH 需要手动设置
resp.headers().set(HttpHeaderNames.CONTENT_LENGTH, 0);之后wireshark抓包正常了apipost也能收到了 这是因为在HTTP/1.1中链接是复用的如果没有content-length就无法区分两个HTTP报文的边界粘包也就是说HTTP/1.1如果是keep alive没有connection也默认是keep-live则content-length和chunk必然是二选一。 有一些响应码可以没有content-length但404响应必须包含body可以是0来自RFC2616 对于响应消息消息里是否包含消息主体依赖相应的请求方法和响应状态码。所有HEAD请求方法的请求的响应消息不能包含消息主体。所有1XX信息的204无内容和304无修改的响应都不能包括一个消息主体message-body。所有其他的响应必须包括消息主体虽然可能长度为零. 。。。。 服务器响应为40x除了响应HEAD请求都应该包含一个message-bodymessage-body包含一个此错误请求的解释。