当前位置: 首页 > news >正文

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请求,都应该包含一个message-body,message-body包含一个此错误请求的解释。

相关文章:

  • 探索IOC和DI:解密Spring框架中的依赖注入魔法
  • 基于51单片机智能电子秤
  • 《vtk9 book》 官方web版 第2章 - 面向对象设计
  • jenkins安装配置,使用Docker发布maven项目全过程记录(1)
  • git checkout和git switch的区别
  • 微信小程序(十五)自定义导航栏
  • 定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱
  • 那些年与指针的爱恨情仇(一)---- 指针本质及其相关性质用法
  • C# 只读文件删除提示失败,给文件修改属性
  • 【论文笔记】《Learning Deconvolution Network for Semantic Segmentation》
  • YOLOv8加入AIFI模块,附带项目源码链接
  • JSON-handle工具安装及使用
  • 2024年可能会用到的几个地图可视化模板
  • 五、详细设计说明书(软件工程)
  • three.js 鼠标选中模型弹出标签
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • canvas 绘制双线技巧
  • Docker下部署自己的LNMP工作环境
  • express.js的介绍及使用
  • IDEA常用插件整理
  • java8-模拟hadoop
  • Javascript 原型链
  • Java多态
  • java中具有继承关系的类及其对象初始化顺序
  • JS学习笔记——闭包
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • socket.io+express实现聊天室的思考(三)
  • Solarized Scheme
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 初识MongoDB分片
  • 大型网站性能监测、分析与优化常见问题QA
  • 机器学习学习笔记一
  • 区块链共识机制优缺点对比都是什么
  • 如何解决微信端直接跳WAP端
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 自定义函数
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 移动端高清、多屏适配方案
  • ​批处理文件中的errorlevel用法
  • ###项目技术发展史
  • #AngularJS#$sce.trustAsResourceUrl
  • #if 1...#endif
  • #NOIP 2014# day.2 T2 寻找道路
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C语言)共用体union的用法举例
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (三)终结任务
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四)Linux Shell编程——输入输出重定向
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .apk文件,IIS不支持下载解决
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福