如何调试 SPDY_PROTOCOL_ERROR?

Posted

技术标签:

【中文标题】如何调试 SPDY_PROTOCOL_ERROR?【英文标题】:How to debug SPDY_PROTOCOL_ERROR? 【发布时间】:2019-10-15 08:08:02 【问题描述】:

在旧版应用程序托管在 Amazon AWS 中,我们会为某个页面获取 SPDY_PROTOCOL_ERROR。这发生在 Google ChromeOpera 中,但在 Firefox 中页面加载正常。根据https://en.wikipedia.org/wiki/SPDY,Chromium 和 Firefox 中的 SPDY 实现可能有点不同,在 Chromium 中无论如何都会发生错误。问题不在本地开发环境中的同一网页中发生。

在通过 Google 进行一些研究后,我仍然没有找到关于如何调试的好答案(从开发人员或服务器管理员的角度来看)。我可以做些什么来确定这个问题的根源?

【问题讨论】:

【参考方案1】:

这个问题原来是由AWS中的zlib输出压缩设置引起的。禁用此设置后,一切都再次起作用。可能是服务器为某些 Chrome 和 Opera 不接受的特殊页面发送了无效的内容长度标头

Cloudflare 支持论坛中对此进行了一些讨论:https://community.cloudflare.com/t/community-tip-fixing-err-spdy-protocol-error/71356

这是来自 Cloudflare 社区的答案:

错误

尝试此社区提示中的建议以帮助您修复 ERR SPDY 访问网站时出现协议错误。

背景

访问站点时出现错误 ERR_SPDY_PROTOCOL_ERROR 表示 阻止页面加载的网络错误。如果你有 重新启动浏览器,更新谷歌浏览器,尝试隐身 模式,并刷新和更新您的 IP,尝试下面的快速修复想法 解决问题。

快速修复思路

    如果您不是网站所有者,请联系网站所有者,让他们知道您在访问他们的网站时遇到问题。

    短期内,将您的 :orange: 更改为 :grey: 将绕过 Cloudflare。这不是最佳的,但可以解决问题 短期内将 Cloudflare 排除在外,但绝不简单 DNS 解析。

    您发送的 Content-Length 标头与实际的 content-length 不匹配。

    修复您的原始响应标头。对于 Apache,请查看此 18。如果您使用托管服务,请联系您的托管服务提供商 为您进行此更改。

    升级到 Pro 以禁用 http/2。

【讨论】:

以上是关于如何调试 SPDY_PROTOCOL_ERROR?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用VS2010远程调试?

如何在PyCharm中调试程序

如何使用VC进行远程调试

如何使用真机调试android程序

如何在 iPhone Safari 上调试网页

如何使用ADB进行调试