解决HTTP服务响应数据不完整响应数据截断的问题

2022-07-16,,,,

背景

大华一款摄像头onvif协议响应的xml数据未携带命名空间导致onvif协议服务解析失败,为了兼容这款摄像头决定对onvif_client进行修改忽略掉命名空间。由于本地没有出问题的摄像头,需要启动http服务器模拟onvif协议,接收onvif客户端发送过来的http请求并响应。

问题

对onvif客户端的某一请求修改了ip和端口成功连接上http服务器之后,请求成功,但是http服务响应的xml数据被截断了,抓包显示http服务器数据为发送完就关闭了连接。

oatpp搭建onvif模拟服务:

解决方案

在领导的帮助下找到思路,原因是onvif客户端发送的http请求未携带keep-alive头,导致该http连接不是长连接,http服务端主动关闭。 查看http服务器源码,查找keep-alive

grep -rn "keep-alive" ./

找到关键信息

if the connection header is present in the request and its value isn't keep-alive, then close

查看源码

找到关键代码,注释掉close标识即可在未携带keep-alive请求头的情况下保证数据发送完整

到此这篇关于http服务响应数据不完整响应数据截断的文章就介绍到这了,更多相关http响应数据截断内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

《解决HTTP服务响应数据不完整响应数据截断的问题.doc》

下载本文的Word格式文档,以方便收藏与打印。