Chrome net: : ERR_INCOMPLETE_CHUNKED_ENCOING 错误

在过去的两个月里,我在 Chrome 的开发者控制台上收到了以下错误:

net::ERR_INCOMPLETE_CHUNKED_ENCODING

症状:

  • 页面未加载。
  • 截断的 CSS 和 JS 文件。
  • 书页挂起来了。

服务器环境:

  • Apache 2.2.22
  • PHP
  • Ubuntu

这种情况发生在我们内部的 Apache 服务器上,而不会发生在其他任何人身上——也就是 我们的用户都没有遇到这个问题,我们的开发团队中也没有其他人遇到这个问题。

其他人使用完全相同的 Chrome 版本访问完全相同的服务器。我也试过禁用所有的扩展和隐身模式浏览-没有效果。

我使用过 Firefox,同样的事情正在发生。截短的文件什么的。唯一的问题是,Firefox 不会引发任何控制台错误,因此您需要通过 Firebug 检查 HTTP 请求来查看问题。

来自 Apache 的响应头:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:close
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Mon, 27 Apr 2015 10:52:52 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:Apache/2.2.22 (Ubuntu)
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.10-1ubuntu3.8

在测试时,我能够通过在 htaccess 文件中强制使用 HTTP 1.0来解决这个问题:

SetEnv downgrade-1.0

但是,将 HTTP 1.0强制到 HTTP 1.1上并不是一个合适的解决方案。

更新 : 因为我是唯一一个遇到这个问题的人,所以我认为我需要花更多的时间来调查这是否是客户端的问题。如果我进入 Chrome 的设置,并使用“恢复到默认”选项,问题就会消失大约10-20分钟。然后它又回来了。

341966 次浏览

错误是试图说 Chrome 在页面被发送时被切断。你的问题是要找出原因。

显然,这可能是影响几个版本 Chrome 的已知问题。据我所知,问题在于这些版本对所发送的块的内容长度和块的表达大小非常敏感(这一点我可能还有很长的路要走)。简而言之,一个稍微不完美的标题问题。

另一方面,可能是服务器没有发送终端0长度块。可以用 ob_flush();修复。也有可能是 Chrome (或者连接或者其他什么东西)运行缓慢。因此,当连接关闭时,页面尚未加载。我不知道为什么会这样。

以下是偏执狂程序员的回答:

<?php
// ... your code
flush();
ob_flush();
sleep(2);
exit(0);
?>

在您的例子中,可能是脚本超时的情况。我真的不知道为什么它应该只影响你,但它可以下降到一堆比赛条件?这只是猜测。您应该能够通过延长脚本执行时间来测试这一点。

<?php
// ... your while code
set_time_limit(30);
// ... more while code
?>

它也可能就像你需要更新你的 Chrome 安装一样简单(因为这个问题是 Chrome 特有的)。

更新: 当 PHP (在同一个本地主机上)为 输出缓冲输出缓冲时抛出一个致命错误,我终于能够复制这个错误。我猜想输出已经被严重破坏,无法发挥更大的作用(头部但很少或根本没有内容)。

具体来说,我不小心让我的代码递归地调用它自己,直到 PHP 正确地放弃了。因此,服务器没有发送终端0长度块——这是我在前面指出的问题。

下面应该为每个客户端修复它。

//Gather output (if it is not already in a variable, use ob_start() and ob_get_clean() )


// Before sending output:
header('Content-length: ' . strlen($output));

但在我的情况下,以下是一个更好的选择,而且也修复了它:

. htaccess:

php_value opcache.enable 0

好的。我已经三次测试了这个,我是 百分百确定,它是由我的抗病毒(ESET NOD32 ANTIVIRUS 5)引起的。

每当我关闭实时保护,问题消失。今天,我把实时保护关闭了6-7个小时,这个问题从来没有发生过。

几分钟前,我把它打开了,但是问题在一分钟内就出现了。

在过去的24小时里,为了确保万无一失,我一次又一次地打开和关闭了实时保护。每次结果都一样。

更新: 我遇到过另一个开发者,他的 Kaspersky Anti-Virus 也有同样的实时保护问题。他关闭了它,问题就解决了。也就是说。这个问题似乎并不局限于 ESET。

这里的问题是我的阿特拉斯 AV。 我一关闭它,问题就消失了。

但是,我真的很想了解这种行为的原因。

我刚刚也遇到了类似的问题。并且注意到只有当页面包含序数值大于255(即多字节)的 UTF-8字符时才会发生这种情况。

最后的问题是如何计算 Content-Llength 头部。底层后端计算的是字符长度,而不是字节长度。关闭内容长度的标题暂时解决了这个问题,直到我可以修复后端模板系统。

很抱歉,我没有确切的答案。但是我也遇到了这个问题,至少在我的情况下,我找到了解决的办法。所以也许它能提供一些线索给其他更了解 Php 的人。

场景是,我有一个传递给函数的数组。这个数组的内容被用来生成一个 HTML 字符串,通过将其全部放在一个全局变量中,然后打印出来,发送回浏览器。(此函数实际上不返回任何内容。我知道很粗心,但这不是重点。)在这个数组中,除了其他事情之外,还有几个元素,它们通过引用携带在这个函数之外定义的嵌套关联数组。通过排除法,我发现在这个函数中操纵这个数组中的任何元素,不管是否引用,包括尝试取消这些引用的元素,都会导致 Chrome 抛出一个 net: : ERR _ INCOMPLETE _ CHUNKED _ ENCOING 错误并且不显示任何内容。尽管事实上全局变量中的 HTML 字符串正是它应该是的。

只有重新设置脚本,使其在一开始就不应用对数组元素的引用,才能使一切恢复正常。我怀疑这实际上是一个 PHP bug,它与引用的元素的存在有关,这些元素抛出了内容长度的标题,但是我真的不太了解这个问题,所以不能确定。

Well. Not long ago I also met this question. And finally I get the solutions which really address this issue.

我的问题症状还包括页面未加载,并且发现 json 数据被随机截断。

以下是我总结出的可以帮助解决这个问题的解决方案

1.Kill the anti-virus software process
2.Close chrome's Prerendering Instant pages feature
3.Try to close all the apps in your browser
4.Try to define your Content-Length header
<?php
header('Content-length: ' . strlen($output));
?>
5.Check your nginx fastcgi buffer is right
6.Check your nginx gzip is open

我在 Chrome 和 Firefox 中的一个站点遇到了这个问题。如果我关掉阿特斯网盾,它就消失了。我似乎通过在我的 htaccess 文件中添加一些 html5样板 htaccess,使它能够运行 Web 盾:

# ------------------------------------------------------------------------------
# | Expires headers (for better cache control)                                 |
# ------------------------------------------------------------------------------


# The following expires headers are set pretty far in the future. If you don't
# control versioning with filename-based cache busting, consider lowering the
# cache time for resources like CSS and JS to something like 1 week.


<IfModule mod_expires.c>


ExpiresActive on
ExpiresDefault                                      "access plus 1 month"


# CSS
ExpiresByType text/css                              "access plus 1 week"


# Data interchange
ExpiresByType application/json                      "access plus 0 seconds"
ExpiresByType application/xml                       "access plus 0 seconds"
ExpiresByType text/xml                              "access plus 0 seconds"


# Favicon (cannot be renamed!)
ExpiresByType image/x-icon                          "access plus 1 week"


# HTML components (HTCs)
ExpiresByType text/x-component                      "access plus 1 month"


# HTML
ExpiresByType text/html                             "access plus 0 seconds"


# JavaScript
ExpiresByType application/javascript                "access plus 1 week"


# Manifest files
ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
ExpiresByType text/cache-manifest                   "access plus 0 seconds"


# Media
ExpiresByType audio/ogg                             "access plus 1 month"
ExpiresByType image/gif                             "access plus 1 month"
ExpiresByType image/jpeg                            "access plus 1 month"
ExpiresByType image/png                             "access plus 1 month"
ExpiresByType video/mp4                             "access plus 1 month"
ExpiresByType video/ogg                             "access plus 1 month"
ExpiresByType video/webm                            "access plus 1 month"


# Web feeds
ExpiresByType application/atom+xml                  "access plus 1 hour"
ExpiresByType application/rss+xml                   "access plus 1 hour"


# Web fonts
ExpiresByType application/font-woff                 "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
ExpiresByType application/x-font-ttf                "access plus 1 month"
ExpiresByType font/opentype                         "access plus 1 month"
ExpiresByType image/svg+xml                         "access plus 1 month"


</IfModule>


# ------------------------------------------------------------------------------
# | Compression                                                                |
# ------------------------------------------------------------------------------


<IfModule mod_deflate.c>


# Force compression for mangled headers.
# http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>


# Compress all output labeled with one of the following MIME-types
# (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
#  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
#  as `AddOutputFilterByType` is still in the core directives).
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule>


</IfModule>


# ------------------------------------------------------------------------------
# | Persistent connections                                                     |
# ------------------------------------------------------------------------------


# Allow multiple requests to be sent over the same TCP connection:
# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive.


# Enable if you serve a lot of static content but, be aware of the
# possible disadvantages!


<IfModule mod_headers.c>
Header set Connection Keep-Alive
</IfModule>

我的天,我5分钟前就解决了同样的问题。我花了好几个小时才找到解决办法。第一眼看上去禁用防病毒解决了 Windows 上的问题。但是后来我注意到其他没有防病毒的 linux 电脑的问题。Nginx 日志中没有错误。我的 uwsgi显示了一些关于“断管”的内容,但不是所有的请求都显示。 知道什么?我在数据库日志中重新启动服务器时发现设备上已经没有空间了,df批准了这一点。解释为什么防病毒被解决的唯一原因是它阻止浏览器缓存(它应该检查每个请求) ,但浏览器的一些奇怪的行为可以简单地忽略不良响应,并显示缓存的响应。

这是众所周知的 Chrome 问题。根据 Chrome 和 Chromium 错误追踪器的说法,目前还没有通用的解决方案。这个问题与服务器类型和版本无关,而是在 Chrome 中出现的。

Content-Encoding头设置为 identity解决了这个问题。

Developer.mozilla.org

标识 | 指示标识函数(即没有压缩,也没有 修改)。

因此,我可以建议,在某些情况下,Chrome 不能正确地执行 gzip 压缩。

如果存在任何不存在的循环或项,那么您将面临这个问题。

当在 Chrome 上运行应用程序时,页面是空白的,并且没有反应。

场景开始:

开发环境: MAC,STS 3.7.3,tc Pivotal Server 3.1,Spring MVC Web,

在 ${ myObjec.getfName ()}中

剧本结束:

问题原因: 在 myObj 上没有定义 getfName ()函数。

希望对你有帮助。

我有个问题。在尝试了这个问题的大部分其他答案之后,我找到了它。这是由于 /var/lib/nginx的所有者和权限,更具体地说是由于 /var/lib/nginx/tmp目录不正确造成的。

Fast-cgi 使用 tmp 目录在生成响应时缓存响应,但是只有当响应大于一定的大小时才缓存响应。所以这个问题是间歇性的,只有当产生的响应很大时才会发生。

检查 nginx <host_name>.error_log,看看您是否有权限问题。

要修复,请确保 /var/lib/nginx的所有者和组以及所有子目录都是 nginx。

我还看到,当存储设备上的空间太小而无法创建临时文件时,会间歇地出现这种情况。在这种情况下,解决方案是在设备上释放一些空间。

在我的案例中,我使用的是 /usr/local/var/run/nginx/fastcgi_temp/3/07/0000000073" failed (13: Permission denied),这可能会导致 Chrome net: : ERR _ INCOMPLETE _ CHUNKED _ ENCOING 错误。

我必须删除 /usr/local/var/run/nginx/,让 nginx 再次创建它。

$ sudo rm -rf /usr/local/var/run/nginx/
$ sudo nginx -s stop
$ sudo mkdir /usr/local/var/run/nginx/
$ sudo chown nobody:nobody /usr/local/var/run/nginx/
$ sudo nginx

我猜测是服务器没有正确处理分块传输编码。它需要终止一个带有终端块的块文件,以表明整个文件已经被转移。因此下面的代码可能有效:

echo "\n";
flush();
ob_flush();
exit(0);

在我的例子中,服务器上 mysqlnd _ ms php 扩展的配置中断。有趣的是,对于短时间的请求,它工作得很好。服务器错误日志中有一个警告,所以我们已经快速修复了它。

我只是想与你分享我的经验,如果有人可能有同样的问题与 MOODLE

我们的 moodle 平台突然变得非常缓慢,仪表板的加载时间是平时的2-3倍(最多6秒) ,有时一些页面根本没有加载(不是404错误,而是一个空白页面)。在开发人员工具控制台中,可以看到以下错误: net::ERR_INCOMPLETE_CHUNKED_ENCODING.

搜索这个错误,看起来像 Chrome 是问题,但我们有各种浏览器的问题。经过几个小时的研究和比较数据库,从前几天我终于找到了问题,有人打开了事件监视。但是,在“配置更改”日志中,这个更改是不可见的!关闭事件监视,最终解决了这个问题——我们没有为事件监视定义规则。

我们使用 MariaDB 和 PHP 5.4运行 Moodle 3.1.2 + 。

这似乎是一个有多种原因和解决方案的常见问题,所以我将把我的答案放在这里,供任何可能需要它的人使用。

我在 Chrome,osx,php70,httpd24组合上获得了 net::ERR_INCOMPLETE_CHUNKED_ENCODING,但是同样的代码在生产服务器上运行得很好。

我一开始跟踪了常规日志,但没什么发现。一个快速的 ls -later显示 system.log是最新的接触文件在 /var/log,尾巴给我

Saved crash report for httpd[99969] version 2.4.16 (805)
to /Library/Logs/DiagnosticReports/httpd.crash

包含在:

Process:               httpd [99974]
Path:                  /usr/sbin/httpd
Identifier:            httpd
Version:               2.4.16 (805)
Code Type:             X86-64 (Native)
Parent Process:        httpd [99245]
Responsible:           httpd [99974]
User ID:               70


PlugIn Path:             /usr/local/opt/php70-mongodb/mongodb.so
PlugIn Identifier:       mongodb.so

之后进行了 brew uninstall php70-mongodbhttpd -k restart一切都很顺利。

在我的情况下,这是超文本标记语言的问题。有’n’在 json 回应引起的问题。所以我把它拿掉了。

看到这个问题有这么多不同的原因,真是令人着迷!

很多人说这是 Chrome 浏览器的问题,所以我尝试了 Safari,仍然有问题。然后尝试了这个帖子中的所有解决方案,包括关闭我的 AVG 实时保护,没有运气。

对我来说,问题是我的 .htaccess文件。它只包含 FallbackResource index.php,但是当我将它重命名为 htaccess.txt时,我的问题就解决了。

这种情况发生在两个不同客户机的服务器上,相隔数年,使用的代码与部署在数百个其他服务器上的代码相同,而且当时没有出现任何问题。

对于这些客户机,它主要发生在具有流式 HTML 的 PHP 脚本上——也就是说,“ Connection: close”页面,当输出可用时,将输出发送到浏览器。

事实证明,PHP 进程和 Web 服务器之间的连接在脚本完成之前和超时之前就过早地断开了。

问题在于 php.ini 主文件中的 opcache.fast _ 闽 = 1。该指令在默认情况下是禁用的,但似乎有些服务器管理员认为这里可以提高性能。在我所有的测试中,我从来没有注意到使用这个设置的积极差异。根据我的经验,它导致一些脚本实际上执行得更慢,并且有一个糟糕的记录,有时在脚本仍在执行时进入关闭,甚至在执行结束时,Web 服务器仍在读取缓冲区。有一份2013年的旧错误报告,到2017年2月还没有解决,这可能与 https://github.com/zendtech/ZendOptimizerPlus/issues/146有关

我已经看到下面的错误出现,由于这一点 编码 PROTOCOL _ ERROR _ SPDY _ PROTOCOL _ ERROR 有时会记录相关的段错误,有时则不会。

如果您遇到任何一种情况,请检查您的 phpinfo,并确保 opcache.fast _ 關机是禁用的。

我的解决办法是:

<?php  ob_start(); ?>
<!DOCTYPE html>
<html lang="de">
.....
....//your whole code
....
</html>
<?php
ob_clean();
ob_end_flush();


ob_flush();


?>

希望这将有助于某人在未来,在我的情况下,这是一个卡巴斯基问题,但上面的修复工程伟大:)

我得到的是 net::ERR_INCOMPLETE_CHUNKED_ENCODING,仔细检查服务器错误日志后,我发现这是由于 PHP 脚本执行超时造成的。

在 PHP 脚本上添加这行代码解决了我的问题:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

档号: 致命错误: 最长执行时间超过30秒

在我的例子中,它发生在 web api 返回负载的 json 序列化过程中——我在实体框架模型中有一个“循环”引用,我返回一个简单的一对多对象图,但是子对象有一个返回到父对象的引用,这显然是 json 序列化程序不喜欢的。移除正在引用父级的子级上的属性可以解决这个问题。

希望这能帮助那些可能有类似问题的人。

嗯,我只是偶然发现了一个类似的问题,但背后有不同的原因..。

我在一个普通的 PHP 项目中使用 Laravel 泊车小弟Laravel Mix。当我在 Chrome 中打开这个网站时,它出现了 net::ERR_INCOMPLETE_CHUNKED_ENCODING错误。(如果我将站点加载到 HTTPS 协议,则错误更改为 net::ERR_SPDY_PROTOCOL_ERROR。)

我检查了 php.iniopcache没有启用。我发现在我的案例中,问题与资产文件的版本控制有关——出于某种原因,它似乎不喜欢资产 URL 中的查询字符串(好吧,奇怪的是,只有一个特定的?).

我已经为本地环境删除了 mix.version(),并且该站点在我的 Chrome 中通过 HTTP 和 HTTPS 协议加载得很好。

在 Drupal 8(Symfony 框架)的控制器上下文中,这个解决方案对我很有效:

$response = new Response($form_markup, 200, array(
'Cache-Control' => 'no-cache',
));


$content = $response->getContent();
$contentLength = strlen($content);
$response->headers->set('Content-Length', $contentLength);


return $response;

否则,响应头部的“传输-编码”得到了一个“分块”值,这可能是 Chrome 浏览器的一个问题。

我遇到了这个问题(在 Chrome 中显示 ERR _ INCOMPLETE _ CHUNKED _ ENCOding,在其他浏览器中没有显示)。原来问题在于我的托管服务提供商 GoDaddy 在我的输出结尾添加了一个监控脚本。

Https://www.godaddy.com/community/cpanel-hosting/how-to-remove-additional-quot-monitoring-quot-script-added/td-p/62592

这通常会在客户端向服务器发送一连串请求时产生,这些请求紧挨着客户端事件。

这通常是客户端编程“糟糕”的标志。

假设我正在更新表的所有行。

糟糕的方法是发送许多请求来更新每一行(在没有等待请求完成的情况下发送许多请求)。要更正它,请确保在发送另一个请求之前,请求已经完成。

好的方法是发送一个包含所有更新行的请求(一个请求)

因此,首先,看看客户端发生了什么,如果需要,还可以重构代码。

使用 wireshark 识别请求中出现的错误。

检查 nginx 文件夹权限并为其设置 Apache 权限:

chown -R www-data:www-data /var/lib/nginx

最简单的解决方案是在 nginx.conf 中将设置的代理位置的 xy _ read _ timeout 增加到一个更高的值(比如120s)。

location / {
....
proxy_read_timeout 120s
....
}

我在这里找到了解决办法 Https://rijulaggarwal.wordpress.com/2018/01/10/atmosphere-long-polling-on-nginx-chunked-encoding-error/

当我面对这个错误时(当从 javascript 调用 AJAX 时) ,原因是控制器的响应是错误的; 它返回的是一个无效格式的 JSON。

对我来说,这是由于硬盘空间不足造成的。

我的申请也有同样的问题。我的项目使用 DevOps,问题出在不健康的计算上。替换他们为我解决了问题

我已经从 http://重定向到 https://,这个问题已经解决了!

我非常肯定,这个问题可能有 多个的原因ーー无论是在服务器端还是客户端。

最近我遇到了一个我在 VPS 上托管的网站(Ubuntu 18.04,PHP 7.4 FPM,nginx + certbot,网站由 WordPress 支持)ー管理页面加载时没有 CSS/JS。

我花了几个小时尝试不同的解决方案,没有一个有用。

最后,我发现,由于某种原因(可能是我早些时候更改了它,但我也不能排除默认情况下它是这样的可能性) ,在我的 /etc/nginx/nginx.conf中,这个文件的第一行被注释:

# user www-data

我取消注释,用 sudo service nginx restart重新启动 nginx,问题就消失了。

如果有人可以检查安装了 nginx 的原始 Ubuntu 18.04,如果这一行是默认注释的话ーー请把它放在注释中。

发生在我身上的原因完全不同。 Net: : ERR _ INCOMPLETE _ CHUNKED _ ENCODING 200 当我检查这个页面并转到 newtork 选项卡时,我看到 vendor.js 页面加载失败。经过检查,似乎 js 文件的大小是大约6.5 mb。那时我意识到我需要压缩 js。我检查了我正在使用 ng build命令来构建。相反,当我使用 ng build --prod --aot --vendor-chunk --common-chunk --delete-output-path --buildOptimizer的时候,它对我很有效。参见 https://github.com/angular/angular-cli/issues/9016

对我来说,这是一个草率的申请问题。一个 AJAX 调用正在对一个包含草率内容的 PHP 进行调用(在两个包含内容中,PHP 关闭分隔符后面有尾部空白)。这意味着在预期的 JSON 输出之前将空格输出到响应。我只是在响应之前放置了一个 JSON 输出的 Header 时才发现了这一点,并且将分块错误替换为“ Header 无法发送,因为输出已经发生”的错误。换句话说,AJAX 希望得到一个 JSON 响应,它得到了这样的结果,但是这个响应并不干净,因为 JSON 响应前面不应该有白色。当我们看到 Firebug 网络中 PHP 的响应时,这一点是显而易见的——由于前面的空格,在面板中的响应看起来是正确的。奇怪的是,并非所有的空白都触发了错误——只有当响应的整个长度超过某个特定长度时,才会发生分块错误。

我通过将数据类型从“ . js”更改为“ . json”来解决这个问题。

如果您可以在本地主机中获得正确的响应,并得到这种错误类型的错误,如果您正在使用 nginx

  1. 转到 Server 并用以下命令打开 nginx.conf:

    Nano etc/nginx/nginx.conf

  2. 在 http 块中添加以下代码行:

    代理缓冲关闭;

  3. 保存并退出文件

这解决了我的问题

在我的例子中(Windows 10) ,问题的根源是我禁用了 WWW 发布服务(我这样做是为了解决 XAMPP 和 IIS 端口80的冲突)。我通过恢复服务解决了这个问题。我认为该服务只与端口80上的流量有关,但是将其关闭会导致整个 HTTP 流量的混乱。

在2022年使用 Amazon Linux 2时,我遇到了这个问题,解决方案是给/var/lib/nginx 文件夹及其子树文件夹提供适当的权限。因为我的 nginx 用户是 user,所以我的命令是:

sudo chown -R user:user /var/lib/nginx/

作为错误标题 ERR _ INCOMPLETE _ CHUNKED _ ENCOding 这只是编码问题,而不是更多。 也许有人通过禁用杀毒软件解决了这个问题,这不是正确的方法。 对于我和其他一些使用编码语言作为回应的人,比如中国或阿拉伯字母,最好的方法是

用英语而不是你的网站主要反应语言返回数据,并用 UI 部分处理翻译。

当然,主要的问题是过时的浏览器不能处理它。

在使用 C # 时遇到了同样的问题,这里有一个可能的解决方案,可以帮助那些能够访问服务器端代码的人:

违规代码: (返回字节,对显示的一些数据有效,但不是全部)

var bytes = await GetBytesCached(url);
await HttpContext.Response.Body.WriteAsync(bytes, 0, bytes.Length);
await HttpContext.Response.Body.FlushAsync();
HttpContext.Response.Body.Close();

正确的代码: (简单地将字节转换为正确编码的字符串)

var bytes = await GetBytesCached(url);
var xmlstring = System.Text.Encoding.UTF8.GetString(bytes);
return new ContentResult() { Content = xmlstring ,ContentType= "application/xml",StatusCode=200};

附加信息: 在返回字节时行为不一致: dev 环境适用于所有数据源,生产环境只适用于看起来是小批量的数据。在所有浏览器上,不管是防病毒还是插件,转而返回 xml 而不是字节似乎都可以避免这个问题。

我们的案件有一个问题与 nginx 服务器,有结束的自由光盘空间,它造成的问题与缓冲