标签: http2

是否可以使用net/http在golang中托管多个域TLS?

我有多个域(让我们说abc.com和xyz.org)与不同的证书.是否可以使用基于主机名的密钥和证书,而无需深入低级别和net.Listen等.只需使用简单的http.ListenAndServeTLS(...)或类似的?基本上就像nginx一样.

https go http2

12
推荐指数
1
解决办法
3218
查看次数

什么是网络::: ERR_HTTP2_PROTOCOL_ERROR?

我目前正在网站上,该网站net::ERR_HTTP2_PROTOCOL_ERROR 200在Google Chrome浏览器上触发错误。我不确定究竟是什么会引起此错误,我只是注意到它仅在使用HTTPS访问网站时弹出。我不能100%确定是否相关,但是它似乎阻止了javascript的正确执行。

例如,发生以下情况:

  1. 我正在使用HTTPS访问网站

  2. 通过https://publish.twitter.com集成的我的Twitter feed 根本没有加载

  3. 我可以在控制台中注意到ERR_HTTP2_PROTOCOL_ERROR

  4. 如果删除代码以加载Twitter提要,则错误仍然存​​在

  5. 如果我通过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:进一步调查的结果如下:

  • 如果服务器返回404而不是2XX,则错误不会在完全相同的页面上弹出
  • 使用HTTPS证书的本地错误不会弹出
  • 错误在使用不同证书的其他服务器(均为OVH)上弹出
  • 无论使用哪个PHP版本,从5.6到7.3都会弹出错误(使用的框架:Cakephp 2.10)

编辑3:根据要求,下面是失败资源的返回标头,即整个网页。即使该错误是在具有HTTP标头200的每个页面上触发的,这些页面也始终在客户端的浏览器中加载,但是有时会丢失一个元素(例如,外部Twitter feed)。除了整个文档本身,“网络”选项卡上的所有其他资产都有成功的回报。 控制台中失败的行

Google Chrome标头(错误):

Chrome标题

Firefox标头(无错误):

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)

https google-chrome http2

12
推荐指数
9
解决办法
2万
查看次数

JSON RPC with HTTP2 vs grpc 有什么区别?

我不喜欢同时做很多事情的工具。所以 GRPC 在我看来是开销,就像 kubernetes。GRPC 实际上是结合了两件事的工具:扩展的 Protobuf(服务支持)和 HTTP2。

我读了很多文章,说使用 GRPC 对性能来说非常棒。而且有两个原因

  • 使用protobuf,它比json或xml小。
  • GRPC 使用 HTTP2 作为传输协议

这是主要部分:protobuf 和 HTTP2是独立的项目、工具等。有了这种理解,我可以说 GRPC 只不过是结合了几种不同的工具,比如 kubernetes 结合了 docker 和编排工具。

所以我的问题是:w ^帽的实际使用GRPC VS HTTP2任何有效载荷(CSV,XML,JSON等)的优势。

让我们跳过有关序列化的部分,因为正如我提到的 protobuf 是来自 grpc 的独立库

json json-rpc protocol-buffers http2 grpc

12
推荐指数
1
解决办法
3059
查看次数

服务器发起的请求

我知道HTTP是一种请求 - 响应协议.简而言之,我的问题是客户端向服务器发出请求以启动长时间运行的进程,并且我想通过包含进度信息的简单JSON消息通知客户端进度.

在HTTP/1.1中,我知道我可以使用WebSocket或服务器发送的事件(SSE)或长轮询.

现在我知道HTTP/2还不支持WebSocket.

我的问题是,通过HTTP/2处理此类事情的最佳方式是什么?

在HTTP/2中是否有任何我不知道的新事物来处理服务器发起的请求?

如果重要的话,我正在使用Go语言.

http go http2

11
推荐指数
2
解决办法
1701
查看次数

使用图像精灵在HTTP/2中有意义吗?

在HTTP/2中不需要捆绑JS和CSS文件,但是图像精灵呢?

看一下这个演示,它似乎已经比HTTP/1.1更快地运行,但不会将图像捆绑到精灵中使它更快?我的意思是,当所有数据都在一个文件中时,PNG的优化算法不会更好吗?

png jpeg http image-optimization http2

11
推荐指数
1
解决办法
4009
查看次数

如何在centos7上启用http2

我有CENTOS7服务器,有:

服务器版本:Apache/2.4.6(CentOS)

.如何在这些Apache上启用/添加HTTP/2?我正在尝试通过Nghttp从客户端发送http2请求,但由于不支持Http2的服务器,我在响应(recv RST_STREAM帧)中收到错误.

我看到我必须在apache中启用module_http2,但我没有发现我可以做到这一点.

提前致谢.

linux apache http2 centos7

11
推荐指数
1
解决办法
2万
查看次数

如何检测站点是否支持PHP中的HTTP/2

PHP中是否有一种简单的方法来测试URL是否支持HTTP/2?我试图检查连接升级或H2在curl_setopt($curl, CURLOPT_HEADER, true)按照HTTP/2鉴定的规格.有许多站点可以添加URL,它会告诉站点是否支持HTTP/2.只是想知道他们是如何测试它的,以及是否可以在PHP中完成类似的事情.在命令行上我可以做类似的事情$ curl -vso --http2 https://www.example.com/

php https http-headers http2

11
推荐指数
1
解决办法
1399
查看次数

如何检查网站是否具有http / 2协议支持

关于http / 2协议有很多话题,但是我想知道是否有一个使用此协议的网站。

我们可以决定使用http://还是https:// 如何编写http / 2请求?

我知道该协议取决于服务器的功能,但是找不到一种方法来检查某些网站(例如支持)是否google.comhttp2启用。

HTTP / 2浏览器支持

如图所示,所有现代浏览器都支持此协议。
我还没有看到任何看起来像新一代协议的链接。

我的问题是:我们是在不知道的情况下使用http / 2协议还是仅仅是童话?

protocols browser-support http2

10
推荐指数
8
解决办法
6625
查看次数

OkHttp 不断收到 StreamResetException:流已重置:当它为 200 时,内部错误

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)

django android okhttp http2

10
推荐指数
1
解决办法
2万
查看次数

http2 伪标头 :authority &amp; :method 的目的是什么?

: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和请求方法不同,浏览器不应该发出新的请求吗?

http2

10
推荐指数
1
解决办法
8776
查看次数