我和我的一些同事得到了 net::ERR_SPDY_PROTOCOL_ERROR
错误。
我们使用ngnix版本1.8.0。错误不稳定(难以复制),并且Ngnix错误日志没有此错误。
您如何建议我们抓住并解决这个问题?
我和我的一些同事得到了 net::ERR_SPDY_PROTOCOL_ERROR
错误。
我们使用ngnix版本1.8.0。错误不稳定(难以复制),并且Ngnix错误日志没有此错误。
您如何建议我们抓住并解决这个问题?
我有同样的问题,检查你是否有足够的空间在Nginx分区/硬盘驱动器,我们添加一些,它对我们有用。
TL; DR:如果您正在缓存资产,请检查nginx服务器上的驱动器空间。
我不知道在哪里发布我的答案,因为它可能是一个边缘情况下获得 ERR_SPDY_PROTOCOL_ERROR
在Chrome中(以及Firefox中等效的“无法加载资源”错误)。但这篇文章帮助我缩小了罪魁祸首。它不是标头,gzip,重定向或adblock / ublock。
我们从机器部署了2个Web应用程序,两者都运行得很好。最近,我们部署了其中一个应用程序,其中包含对缓存资产的更改。一旦部署完成,我们立即得到了 ERR_SPDY_PROTOCOL_ERROR
来自Chrome。有趣的是,它收到了一个 HTTP 200
如果您直接导航到资产,Chrome将呈现资产。但是,在页面上加载资产会导致它失败。
足够的,其他Web应用程序非常好。调查Chrome上的网络内部,我们发现服务器正在关闭连接。几个小时后,我们确定这是因为我们的nginx服务器耗尽了驱动器空间。我不知道为什么这会导致资产在您直接导航时正确加载,但在加载页面时失败,但清除空间会立即修复问题。
似乎有很多潜在的原因。我今天打的就是标题线
add_header X-Frame-Options:deny;
出于某种原因,当前的chrome会使用ssl + http2对其进行barf。其他X-Frame标头似乎不是问题。
我有同样的问题,检查你是否有足够的空间在Nginx分区/硬盘驱动器,我们添加一些,它对我们有用。
TL; DR:如果您正在缓存资产,请检查nginx服务器上的驱动器空间。
我不知道在哪里发布我的答案,因为它可能是一个边缘情况下获得 ERR_SPDY_PROTOCOL_ERROR
在Chrome中(以及Firefox中等效的“无法加载资源”错误)。但这篇文章帮助我缩小了罪魁祸首。它不是标头,gzip,重定向或adblock / ublock。
我们从机器部署了2个Web应用程序,两者都运行得很好。最近,我们部署了其中一个应用程序,其中包含对缓存资产的更改。一旦部署完成,我们立即得到了 ERR_SPDY_PROTOCOL_ERROR
来自Chrome。有趣的是,它收到了一个 HTTP 200
如果您直接导航到资产,Chrome将呈现资产。但是,在页面上加载资产会导致它失败。
足够的,其他Web应用程序非常好。调查Chrome上的网络内部,我们发现服务器正在关闭连接。几个小时后,我们确定这是因为我们的nginx服务器耗尽了驱动器空间。我不知道为什么这会导致资产在您直接导航时正确加载,但在加载页面时失败,但清除空间会立即修复问题。
似乎有很多潜在的原因。我今天打的就是标题线
add_header X-Frame-Options:deny;
出于某种原因,当前的chrome会使用ssl + http2对其进行barf。其他X-Frame标头似乎不是问题。
我试图找到我面临的问题的帮助时遇到了这个问题 ERR_SPDY_PROTOCOL_ERROR
在Chrome上。认为这可能会让其他人受益
我们的情况/解决方案:我们使用 AWS Application Load Balancer 连接到 EC2 实例。我们在EC2上运行的脚本之一代理来自客户端浏览器的请求。我们最近更新了脚本 - 没有相关更改 - 并注意到Chrome和Safari对代理脚本的请求都开始失败。 Chrome显示了 ERR_SPDY_PROTOCOL_ERROR
错误,当我们挖到它时,我们可以看到此请求使用HTTP / 2。 Firefox请求继续正常工作。
我们的解决方案:我们关闭了ALB中的HTTP / 2支持。马上解决了这个问题。
AWS CLI命令:
aws elbv2 modify-load-balancer-attributes --load-balancer-arn <your_load_balancer_arn> --attributes Key=routing.http2.enabled,Value=false
从其他答案可以看出,很多不同的东西都可能导致这种情况。对我来说,我有一个格式错误的标题,其他浏览器只是忽略了(额外的 :
)。唯一的答案是调试提示,在加载破碎的页面时检查Chrome的网内内容事件:chrome:// net-internals /#events
对我来说,当我看到这条线时,我知道这是一个标题问题
t=65422 [st=53] HTTP_TRANSACTION_READ_HEADERS [dt=4]
--> net_error = -337 (ERR_SPDY_PROTOCOL_ERROR)
这是Chromium浏览器与某些防病毒程序(如AVG和Avast)之间存在的已知问题,尤其是在使用SSL连接时。它无法在用户端解决。网站开发人员可以防止此问题发生。
Web开发人员的文档在这里: http://dev.chromium.org/spdy/spdy-best-practices
以下是针对该文章中没有特别提及的开发人员的一些有用提示:
根据我的经验,只有在使用Sessions存储和传递数据时才会出现此问题。 Cookies,Get和Post似乎不受影响。
希望这可以帮助。
我有一个网站这样做,结果是有人忘记在index.php的第一行的PHP重定向中放置“Location:”,使标头无效。显然只有Chrome关注,其余的浏览器仍然可以很好地加载它。
与OP一样,这对我来说是一个间歇性的问题,只发生在大小为2mb的AJAX请求上。
在我们从AWS经典ELB转移到ALB之后,问题就开始了。
我通过卸载Chrome解决了这个问题,删除了我的用户个人资料(在Mac上删除了内容 ~/Library/Application Support/Google/Chrome
),然后重新安装。
我最近在服务器升级后看到了这个错误。
我在Chrome中为所有用户看到了它,但只是断断续续地。
通过让他们使用Chrome的网站“空缓存和硬重新加载”刷新功能,我能够为所有用户解决这个问题。 (对于Chrome工具,F12,右键单击刷新按钮)
我怀疑这与正在使用的SSL证书缓存的内容有关。
对我来说,Nginx配置不允许OPTIONS方法。我只将GET | PUT | POST | DELETE列入白名单,所以当Chrome尝试发送OPTIONS方法时,因为上帝知道为什么**,错误被重现了。
打开Firefox并重复请求,然后查看网络检查器以检查是否正在发送任何OPTIONS请求。
**可能要检查X-Frame-Options或HSTS验证。
检查代理缓存路径的位置 - 检查它是否存在,是否有空间,以及权限和所有者是否允许 nginx
写入路径的过程。
例如 nginx.conf(片段)
proxy_cache_path /proxy_cache levels=1:2 keys_zone=danger_zone:10m inactive=60m;
...然后检查 /proxy_cache
路径是拥有和可写的 nginx
。