apipost和curl收不到服务器响应的HTTP/1.1 404 Not Found

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\n(0d 0a 0d 0a):
在这里插入图片描述
第二个报文是服务器发送的FIN,里面并没有应用层数据,Len=0:
在这里插入图片描述
不清楚为什么认为这个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请求,服务器都应该包含一个实体,此实体包含一个此错误请求的解释。

相关推荐

  1. curl获取http请求响应

    2024-01-24 16:16:02       31 阅读
  2. curl命令忽略受信任https安全限制

    2024-01-24 16:16:02       53 阅读
  3. 【Android】EventBus消息一种情况

    2024-01-24 16:16:02       34 阅读
  4. HTTP CURL

    2024-01-24 16:16:02       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-24 16:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-24 16:16:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-24 16:16:02       82 阅读
  4. Python语言-面向对象

    2024-01-24 16:16:02       91 阅读

热门阅读

  1. Go黑帽子(第一章)

    2024-01-24 16:16:02       46 阅读
  2. springboot中redis的配置详细讲解

    2024-01-24 16:16:02       45 阅读
  3. android 线程池的管理工具类

    2024-01-24 16:16:02       47 阅读
  4. Android NFC读卡

    2024-01-24 16:16:02       52 阅读
  5. springboot aop 自定义注解形式

    2024-01-24 16:16:02       56 阅读
  6. 算法训练营Day48(动态规划9)

    2024-01-24 16:16:02       56 阅读
  7. mousedown、mouseup、click

    2024-01-24 16:16:02       51 阅读
  8. 汇编中MACRO ENDM与C语言中的#define理解与对比

    2024-01-24 16:16:02       54 阅读
  9. 自然语言处理(NLP)

    2024-01-24 16:16:02       61 阅读
  10. 大语言模型(LLM)有哪些?

    2024-01-24 16:16:02       58 阅读