我有多个域(让我们说abc.com和xyz.org)与不同的证书.是否可以使用基于主机名的密钥和证书,而无需深入低级别和net.Listen等.只需使用简单的http.ListenAndServeTLS(...)或类似的?基本上就像nginx一样.
我目前正在网站上,该网站net::ERR_HTTP2_PROTOCOL_ERROR 200在Google Chrome浏览器上触发错误。我不确定究竟是什么会引起此错误,我只是注意到它仅在使用HTTPS访问网站时弹出。我不能100%确定是否相关,但是它似乎阻止了javascript的正确执行。
例如,发生以下情况:
我正在使用HTTPS访问网站
通过https://publish.twitter.com集成的我的Twitter feed 根本没有加载
我可以在控制台中注意到ERR_HTTP2_PROTOCOL_ERROR
如果删除代码以加载Twitter提要,则错误仍然存在
如果我通过HTTP访问网站,则会显示Twitter feed,并且错误消失
谷歌浏览器是唯一会触发该错误的网络浏览器:它在Edge和Firefox上均可正常运行。(注:我尝试使用Safari,但出现类似kcferrordomaincfnetwork 303错误)
我想知道它是否可能与服务器返回的标头有关,因为错误中提到了“ 200”,并且404/500页没有触发任何内容。
根本没有记录错误。Google搜索给我的结果很少。此外,我注意到它出现在最近的Google Chrome浏览器版本中。该错误不会在v.64.X上弹出,但会在v.75 +上弹出(无论操作系统如何;我在Mac tho上工作)。
任何调查的线索将不胜感激!
提前致谢。
特里斯坦
编辑1:可能与Firefox上的“网站确定 ”相关,但与Safari上的“网站正常 ”无关(kCFErrorDomainCFNetwork错误303),也与Chrome无关(net :: ERR_SPDY_PROTOCOL_ERROR)
编辑2:进一步调查的结果如下:
编辑3:根据要求,下面是失败资源的返回标头,即整个网页。即使该错误是在具有HTTP标头200的每个页面上触发的,这些页面也始终在客户端的浏览器中加载,但是有时会丢失一个元素(例如,外部Twitter feed)。除了整个文档本身,“网络”选项卡上的所有其他资产都有成功的回报。

Google Chrome标头(错误):
Firefox标头(无错误):
curl --head --http2控制台中的请求返回以下成功:
HTTP/2 200
date: Fri, 04 Oct 2019 08:04:51 GMT
content-type: text/html; charset=UTF-8
content-length: 127089
set-cookie: SERVERID31396=2341116; path=/; max-age=900
server: Apache
x-powered-by: PHP/7.2
set-cookie: xxxxx=0919c5563fc87d601ab99e2f85d4217d; expires=Fri, …Run Code Online (Sandbox Code Playgroud) 我不喜欢同时做很多事情的工具。所以 GRPC 在我看来是开销,就像 kubernetes。GRPC 实际上是结合了两件事的工具:扩展的 Protobuf(服务支持)和 HTTP2。
我读了很多文章,说使用 GRPC 对性能来说非常棒。而且有两个原因
这是主要部分:protobuf 和 HTTP2是独立的项目、工具等。有了这种理解,我可以说 GRPC 只不过是结合了几种不同的工具,比如 kubernetes 结合了 docker 和编排工具。
所以我的问题是:w ^帽的实际使用GRPC VS HTTP2任何有效载荷(CSV,XML,JSON等)的优势。
让我们跳过有关序列化的部分,因为正如我提到的 protobuf 是来自 grpc 的独立库
我知道HTTP是一种请求 - 响应协议.简而言之,我的问题是客户端向服务器发出请求以启动长时间运行的进程,并且我想通过包含进度信息的简单JSON消息通知客户端进度.
在HTTP/1.1中,我知道我可以使用WebSocket或服务器发送的事件(SSE)或长轮询.
现在我知道HTTP/2还不支持WebSocket.
我的问题是,通过HTTP/2处理此类事情的最佳方式是什么?
在HTTP/2中是否有任何我不知道的新事物来处理服务器发起的请求?
如果重要的话,我正在使用Go语言.
在HTTP/2中不需要捆绑JS和CSS文件,但是图像精灵呢?
看一下这个演示,它似乎已经比HTTP/1.1更快地运行,但不会将图像捆绑到精灵中使它更快?我的意思是,当所有数据都在一个文件中时,PNG的优化算法不会更好吗?
我有CENTOS7服务器,有:
服务器版本:Apache/2.4.6(CentOS)
.如何在这些Apache上启用/添加HTTP/2?我正在尝试通过Nghttp从客户端发送http2请求,但由于不支持Http2的服务器,我在响应(recv RST_STREAM帧)中收到错误.
我看到我必须在apache中启用module_http2,但我没有发现我可以做到这一点.
提前致谢.
PHP中是否有一种简单的方法来测试URL是否支持HTTP/2?我试图检查连接升级或H2在curl_setopt($curl, CURLOPT_HEADER, true)按照HTTP/2鉴定的规格.有许多站点可以添加URL,它会告诉站点是否支持HTTP/2.只是想知道他们是如何测试它的,以及是否可以在PHP中完成类似的事情.在命令行上我可以做类似的事情$ curl -vso --http2 https://www.example.com/
关于http / 2协议有很多话题,但是我想知道是否有一个使用此协议的网站。
即
我们可以决定使用http://还是https://
如何编写http / 2请求?
我知道该协议取决于服务器的功能,但是找不到一种方法来检查某些网站(例如支持)是否google.com已http2启用。
如图所示,所有现代浏览器都支持此协议。
我还没有看到任何看起来像新一代协议的链接。
我的问题是:我们是在不知道的情况下使用http / 2协议还是仅仅是童话?
我StreamResetException: stream was reset: INTERNAL_ERROR从 OkHttp 得到的。有什么问题?
这是日志。
I/okhttp.OkHttpClient: <-- 200 https://www.example.com/user/list (396ms)
I/okhttp.OkHttpClient: date: Fri, 04 Dec 2020 02:21:35 GMT
I/okhttp.OkHttpClient: content-type: application/json
I/okhttp.OkHttpClient: content-length: 99730
I/okhttp.OkHttpClient: server: nginx/1.18.0
I/okhttp.OkHttpClient: allow: GET, HEAD, OPTIONS
I/okhttp.OkHttpClient: x-frame-options: DENY
I/okhttp.OkHttpClient: x-content-type-options: nosniff
I/okhttp.OkHttpClient: referrer-policy: same-origin
D/okhttp.Http2: << 0x00000003 5792 DATA
D/okhttp.Http2: << 0x00000003 4 RST_STREAM
D/okhttp.TaskRunner: Q10092 canceled : OkHttp ConnectionPool
D/force: okhttp3.internal.http2.StreamResetException: stream was reset: INTERNAL_ERROR
D/okhttp.Http2: >> 0x00000000 8 GOAWAY
D/okhttp.TaskRunner: Q10096 finished run in 216 ms: …Run Code Online (Sandbox Code Playgroud) :authorityhttp2 伪标头&的目的是什么:method?我感到很困惑,因为:authority&:method似乎重复了http 1.1 中的请求 URL(主机)和请求方法
与:path伪标头相比,如https://developers.google.com/web/fundamentals/performance/http2#header_compression中所述,我可以看到它可用于对其他资源的连续请求。所以我怀疑:authority也许也:method可以为此目的进行优化。但我无法弄清楚具体是怎样的。例如,如果:authority、 、:method都:path与原来的请求URL和请求方法不同,浏览器不应该发出新的请求吗?