chrome请求cgi遇到net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
测试一个web demo的时候,通过chrome请求板子上的web server的cgi时总是提示:net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
搜遍整个网络(Google + Baidu),尝试过所有可以尝试的建议,都不起作用。
在一遍文章里面看到了一句话:该问题本质原因都是响应数据不完整导致,排查针对这个去就行,包括前端后端所有都有可能导致,常见的应该是数据配置限制了。
后面来看确实是【真理】!
首先说明一下,在HTTP/1.1的时候增加一个“Transfer-Encoding: chunked”属性,意思是支持数据分块传输,优点是通讯比较灵活体验好。可以看到上面的错误信息就跟这个有关。
开始的解决方法,就是在web server里面强制移除“Transfer-Encoding: chunked” Header属性,然后就能在chrome里面正常获取cgi返回值。但是测试发现,通讯不太稳定,会发生获取不到值的情况,这时页面内容就刷不出来,影响用户体验;
然后通过对chunked分块传输机制仔细研究,发现确实是由于返回cgi数据的时候,未发送结束标志导致chrome浏览器认为收到的块数据不完整,从而抛出了:net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)的异常。
根据chunked属性要求,发生的最后一块数据必须是长度为0的空字符串,否则chrome就不知道是否传输结束。
所以,经过仔细的排查,确实是web server端少发了长度为0的空字符串作为结束标记,增加上就可以了。(至于为什么会少发,是由于其它问题导致进入了非正常逻辑,正常逻辑分支是有发生结束标记的,所以当前解决方案是在非正常逻辑里面也增加一条发生结束标记的语句)
有关chunked介绍,可以浏览:https://blog.csdn.net/u014569188/article/details/78912469,讲的比较详细。
chrome请求cgi遇到net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)的更多相关文章
- NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
错误信息: NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 错误背景:微服务不通过统一的nginx端口访问,能够正常请求接口并获取对应的响应.但是通过ngi ...
- boa + ajax + cgi ajax请求cgi
最近公司要做一个通讯管理机,然后需要和另外一个同事一起做,我们需要用到boa+Ajax+CGI,以前没试过与CGI交互,一开始发现问题挺大的,用ajax请求cgi,总是不返回数据,又或者请求回来的是c ...
- spring HandlerInterceptorAdapter拦截ajax异步请求,报错ERR_INCOMPLETE_CHUNKED_ENCODING
话不多说,直接上正文. 异常信息: Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING 问题描述: 该异常是在页面发送ajax请 ...
- 关于chrome请求被挂起页面加载缓慢问题的追查
请参考FEX团队探究结果 http://fex.baidu.com/blog/2015/01/chrome-stalled-problem-resolving-process/ 结论如下: 请求成功构 ...
- ajax请求失败 chrome报错net::ERR_INCOMPLETE_CHUNKED_ENCODING 问题原因
项目框架 React.js + webpack + ES6 + JQuery 问题场景 ajax请求用户数据,服务器返回json格式,数据很可能会比较长,甚至达到几百kb. 问题描述 客户端ajax请 ...
- selenium设置chrome和phantomjs的请求头信息
selenium设置chrome和phantomjs的请求头信息 出于反爬虫也好-跳转到手机端页面也好都需要设置请求头,那么如何进行呢? 目录 一:selenium设置phantomjs请求头: ...
- 使用h5的history改善ajax列表请求体验
信息比较丰富的网站通常会以分页显示,在点“下一页”时,很多网站都采用了动态请求的方式,避免页面刷新.虽然大家都是ajax,但是从一些小的细节还是 可以区分优劣.一个小的细节是能否支持浏览器“后退”和“ ...
- HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码
(请求行的)请求方法 包括: GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS 注意:这些请求方法虽然是 HTTP 协议规定的,但是 Web Server 未必允许或支持这 ...
- 网络知识之http请求
使用http超文本传输协议来访问web服务器 它定义了客户端和服务器之间交互的信息内容和步骤. 客户端解析url后发送请求消息---->服务器(解析请求消息,完成工作,包装结果为响应消息)--- ...
随机推荐
- 基本命令学习 -(4)链接文件:ln命令
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 在Windows系统中,快捷方式是指向原始文件的一个链接文件,原文件一旦被删除或剪切到其 ...
- BottomNavigationView点击刷新问题
BottomNavigationView点击刷新问题 问题: 项目中使用了BottomNavigationView作为底部导航栏. 点击item切换的时候发现会有闪烁现象出现. 原因: BottomN ...
- Java学习笔记-基础语法ⅩⅠ-UDP、TCP
网络编程 三要素:IP地址.端口.协议 IP地址:使用ipconfig查看,如果装了VM的话,会有VMnet1.VMnet8和WLAN,net1不能从虚拟机到主机,net8不能从主机到虚拟机,net0 ...
- C# 编写一个简单易用的 Windows 截屏增强工具
半年前我开源了 DreamScene2 一个小而快并且功能强大的 Windows 动态桌面软件.有很多的人喜欢,这使我有了继续做开源的信心.这是我的第二个开源作品 ScreenshotEx 一个简单易 ...
- python常用内置函数和关键字
常用内置方法 在Python中有许许多多的内置方法,就是一些Python内置的函数,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作. 查看所有的内置类和内置方法 # 方法一 bu ...
- spring 事务传播(Propagation)
propagation 一共有以下几种选项: 1. REQUIRED(默认): 使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法必须运行在一个事务中:如果当前存在事务,则加入这个事务,成为 ...
- 好客租房53-context的使用
app组件要传递给child组件 该如何处理 更好的姿势 跨组件传递数据 Provider 用来提供数据 Consumer用来消费数据 1调用React.createContext() 创建provi ...
- Ajax——Get请求
Get.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- python之re模块补充和其他模块(collection、time、queue、datetime、random)
目录 re模块补充说明 collections模块 queue模块 time模块 datetime模块 random模块 re模块补充说明 在正则表达式中,'()'的作用是进行分组,但是在re模块中, ...
- vs2022+resharper C++ = 拥有一个不输clion的代码体验
这篇文章详细讲一下resharper C++在vs2022中的配置,让他拥有跟clion一样好用的代码补全功能. 为什么clion写代码体验很好好用为啥还要用vs呢,因为网上很多教程都是基于visua ...