谷歌chrome浏览器ERR_SPDY_PROTOCOL_ERROR错误
前几天老大突然和我说之前的导出excel报表功能炸了,让我看看,那我就看看呗,本地环境、测试环境都ok啊,怎么同样的代码,到线上却崩了呢,搞了一下午,自己差点奔溃,但是没办法,只能接着搞。
来看看问题原因:
当你把网站迁移到性能更好的HTTP/2 协议时,可能会出现Chrome 没法加载页面的问题,取而代之是一个显示This site can’t be reached,以及错误信息为ERR_SPDY_PROTOCOL_ERROR
的页面。错误信息里面没有提到HTTP/2, 可能是因为 HTTP/2 是从SPDY 协议发展而来,所以错误信息还是老的SPDY。
原来我们新线上环境刚升级为HTTPS,所以能看到ERR_SPDY_PROTOCOL_ERROR
可能是因为服务器发送了一个无效的HTTP header。Chrome 处理二进制的HTTP/2 协议时有一些严格,不会处理以空格代替破折号的header(例如用Referrer Policy
代替Referrer-Policy
),也不会处理带着2个冒号的header(例如Content-Security-Policy:: ...
),所以检查下你的header 是否准确。Firefox 会忽略这些无效的header,正常显示页面。
继续找问题:
访问chrome://net-internals/#events
(这链接没法点击,只能复制然后粘贴到地址栏再访问),在搜索框输入你的域名(我以example.com
为例),然后在其他标签中打开出问题的网站。返回chrome://net-internals/#events
,选中Source Type 是HTTP2_SESSION
的行。
在右边,可以看到HTTP/2 协议的详细信息,重点部分类似如下:
t=50413 [st=7] HTTP2_SESSION_RECV_INVALID_HEADER--> header_name = "referrer policy"--> header_value = "same-origin"
t=50413 [st=7] HTTP2_SESSION_SEND_RST_STREAM--> description = "Could not parse Spdy Control Frame Header."--> error_code = "1 (PROTOCOL_ERROR)"--> stream_id = 3
看到HTTP2_SESSION_RECV_INVALID_HEADER
那行了吗?无效的header 就在它下面,在这个问题中,无效的header 是referrer policy
,用空格代替了破折号。HTTP/2 协议理的header 名称必须全小写,如果你发送一个Referrer-Policy
的header,浏览器会视为referrer-policy
。
我所遇到的就是header里多了个%20,也就是空格,这么个空格在平时不会被解析,只有在chrome浏览器HTTPS协议下才会被如此严谨。。真是让老夫头疼啊。不过总算是解决了。
在你浏览器的chrome://net-internals/
中,你能发现很多有趣的东西。这里有一些不会出现在开发者工具中的请求,例如浏览器扩展发出的请求。
转自:https://www.michalspacek.com/chrome-err_spdy_protocol_error-and-an-invalid-http-header
谷歌chrome浏览器ERR_SPDY_PROTOCOL_ERROR错误相关推荐
- 谷歌浏览器linux 64怎么安装插件,Ubuntu 16.04下安装64位谷歌Chrome浏览器
1.进入 Ubuntu 16.04 桌面,按下 Ctrl + Alt + t 键盘组合键,启动终端. 也可以按下 Win 键(或叫 Super 键),在 Dash 的搜索框中输入 terminal 或 ...
- 如何解决谷歌Chrome浏览器空白页的问题
如何解决谷歌Chrome浏览器空白页的问题 谷歌Chrome浏览器突然不打开任何网页,无论是任何站点(如http://www.baidu.com), 还是Chrome浏览器的设置页面(chrome:/ ...
- 谷歌chrome浏览器源码分析
谷歌chrome浏览器源码分析 2016-01-21 15:24 55人阅读 评论(0) 收藏 举报 分类: C++(52) 转自CSDN 前言: 1.之所以整理此文,有俩个目的:一是为了供自己学 ...
- Ubuntu 17.04下安装64位谷歌Chrome浏览器
1.进入 Ubuntu 16.04 桌面,按下 Ctrl + Alt + t 键盘组合键,启动终端. 也可以按下 Win 键(或叫 Super 键),在 Dash 的搜索框中输入 terminal 或 ...
- [86]ubuntu16.04下安装64位谷歌Chrome浏览器
1.进入 Ubuntu 16.04 桌面,按下 Ctrl + Alt + t 键盘组合键,启动终端. 也可以按下 Win 键(或叫 Super 键),在 Dash 的搜索框中输入 terminal 或 ...
- Ubuntu 16.04下安装64位谷歌Chrome浏览器
1.将下载源加入到系统的源列表 在终端中,输入以下命令: sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/s ...
- 谷歌 chrome 浏览器开发者工具打不开的解决方法
谷歌 chrome 浏览器开发者工具打不开的解决方法 参考文章: (1)谷歌 chrome 浏览器开发者工具打不开的解决方法 (2)https://www.cnblogs.com/youding/p/ ...
- 谷歌浏览器书签栏怎么隐藏 谷歌Chrome浏览器书签栏隐藏教程
打开谷歌Chrome浏览器,进入设置页面; 谷歌浏览器书签栏怎么隐藏?谷歌Chrome浏览器书签栏隐藏教程 谷歌浏览器书签栏怎么隐藏?谷歌Chrome浏览器书签栏隐藏教程 待设置页面弹出后,滑动找寻& ...
- 谷歌Chrome浏览器欲推门户网站聚合 正测试新“探索”页面
谷歌chrome浏览器欲推门户网站聚合 正测试新"探索"页面 对于国内的浏览器来说,应用界面中集成门户网站聚合的做法非常常见.最近有消息显示,谷歌Chrome浏览器也可能要效仿这一 ...
最新文章
- java openfile busy_android java.io.IOException: open failed: EBUSY (Device or resource busy)
- linux命令free
- 核心交换机相对于普通交换机的优势
- 【转】03.Dicom 学习笔记-DICOM C-Get 消息服务
- Android中使用软引用和弱引用避免OOM的方法
- python对象的三个属性_Python 对象属性的访问
- .net trim 替换指定字符_CAD二次开发实例:批量文本查找替换
- SpringBoot系列: Eclipse+Maven环境准备
- Linux下VNCSERVER的使用介绍
- 当前目录未找到系统,请尝试选择更深层的目录再次搜索解决方法
- 深夜,基友给我发了个某短视频app,我没忍住把它给...
- mysql 百度地图 省市_批量获取百度地图的行政区划电子围栏
- 2016年最新J2EE基础入门教程目录(完结版)
- 继承QPushButton重写MouseEvent后按钮clicked信号不响应
- [转]SAP模块一句话入门
- 转:人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水...
- 初探强化学习(11)Dyna类型的强化学习
- python opencv 利用HSV,YUV(YCbCr)实现皮肤检测与抠图,与磨皮美颜
- 妇女节手抄报Word电子小报
- 使用Highcharts来画一个简易的甘特图
热门文章
- QQ空间小秘书 V1.13 beta3~~ 天空原创软件
- 连锁企业如何迈出网络运维数字化升级第一步?
- 在n个硬币中找出假币
- select二级联动价格策略+js的eval()
- 手把手带你YOLOv5 (v6.1)添加注意力机制(二)(在C3模块中加入注意力机制)
- CentOS 7 下安装 Nginx
- 中国厉害的黑客组织?别说只知道红客联盟,知道“他们”才厉害
- 前天在腾讯soso问问上别人问我raid问题?
- Datawhale 7月学习——李弘毅深度学习:卷积神经网络
- Eureqa Formulize从实验数据中自动筛选函数关系的symbolic regression符号回归软件