在 Chrome、Firefox 和 cURL 上突然出现分块请求问题
Posted
技术标签:
【中文标题】在 Chrome、Firefox 和 cURL 上突然出现分块请求问题【英文标题】:Chunking Request Issues Out Of Nowhere on Chrome, Firefox, and cURL 【发布时间】:2020-09-04 14:22:31 【问题描述】:我的生产服务器在特定请求上出现了分块错误,这似乎无处不在。服务器上没有更改任何配置文件,服务器上的其他任何内容都没有更改。我什至不知道从哪里开始调试这个错误。
此分块错误仅发生在 1 个带有查询参数的 GET 请求上。
在 Chrome 上,错误是:
net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (Ok)
。
为了确保这不是 Chrome 特定的问题,我在 Firefox 上进行了尝试,但同样的事情发生了,尽管出现了不同的错误 SyntaxError: JSON.parse: unterminated string at line
。检查响应显示 Firefox 正在从请求中接收一些 JSON,但不是全部。
在服务器上,我使用 cURL 获取具有完全相同查询参数的 URL,并收到此错误:ncurl: (18) transfer closed with outstanding read data remaining
。如果我使用 HTTP 1.0 没有任何变化,但如果我添加标头 "Expect: "
,则请求会在某些时候停止接收数据。
cURL 不是这里的问题,我需要这个请求来处理 javascript AJAX 请求。提出此请求的文件已 7 个月未更改。
此请求的预期返回是来自数据库的 50 - 200 行。如果我直接在数据库上做SELECT查询,是没有问题的。
我从哪里开始寻找?日志文件没有感兴趣的信息,服务器有足够的内存和cpu。
我们的服务器是 Ubuntu 16.04 和 Apache 2.4。我们的 API 是 DreamFactory;也没有更改任何设置。
【问题讨论】:
【参考方案1】:在我的 php.ini 文件中更改 opcache.fast_shutdown=0
似乎已经解决了这个问题。
Apache 的 error_log 在我遇到此问题的每个请求中都有一个新行读取 zend_mm_heap corrupted
。
见this question
【讨论】:
【参考方案2】:看起来您正在运行防火墙或防病毒软件。尝试在杀毒软件关闭或暂停的情况下拨打电话?
【讨论】:
以上是关于在 Chrome、Firefox 和 cURL 上突然出现分块请求问题的主要内容,如果未能解决你的问题,请参考以下文章
Angular 跨域请求在 Chrome 上有效,在 Firefox 和 IE 上失败
使用 FireFox、Safari 和 Chrome 在剪贴板上复制/放置文本
Flexbox 在 Firefox 上无法正常工作,但在 Chrome 和 Safari 上正常
Firefox 在 CORS 资源上失败,而 Chrome 和 Safari 工作