重新连接后,Chrome net :: ERR_HTTP2_PROTOCOL_ERROR 200

制作

我将Node服务器与用于处理服务器已发送事件流的快速应用程序一起使用。这是通过启用了http2的NginX代理的。SSE事件通过React应用程序中的EventSource消耗。我每10秒发送一次心跳消息,以保持连接状态。

这一切都非常有效,直到出现某种形式的网络中断为止,例如让我的笔记本电脑进入睡眠状态然后重新唤醒它。

然后从该点开始,流将每40秒钟左右出现一次net :: ERR_HTTP2_PROTOCOL_ERROR 200错误,然后重新连接,而不是仅与稳定流重新连接一次。

Firefox可以正常工作。它不会出错,并且仅重新连接一次。

如果我将Node配置为直接提供http2而不是通过NGinx作为测试(通过spdy库),那么一切都会按预期进行,所以我不认为这是Node问题,并且我的Nginx配置和Chrome必须缺少某些功能。

Nginx配置如下(位置/ stream是SSE代理)

server {
    listen 28443 ssl http2;
    listen [::]:28443 ssl http2;

    server_name example.com;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    http2_max_field_size 16k;
    http2_max_header_size 128k;

    root /var/www/example.com;
    index index.html index.htm;

    location / {
        client_max_body_size 100M;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://localhost:28080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'Upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /stream {
        proxy_http_version 1.1;
        # proxy_request_buffering off;
        # proxy_buffering off;
        # proxy_cache off;
        # chunked_transfer_encoding off;
        proxy_set_header    Connection          '';
        proxy_set_header  Host            $host;
        proxy_set_header  X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:28080/stream;
    }
}

我尝试过关闭proxy_buffers和keepalive设置等各种组合。这似乎只影响两次错误之间的时间,即5分钟而不是40秒。

Elevenfox

不确定是否可以解决这个问题。通过增加大小,我最近遇到了相同的问题:

http2_max_field_size 64k;
http2_max_header_size 512k;

镀铬的net::ERR_HTTP2_PROTOCOL_ERROR消失了。

另外,不确定它是否适用于您。如果我使用Firefox,实际上可以正确访问我的网站。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

返回HTTP代码200从春天REST API

WebSocket连接失败:连接建立错误:net :: ERR_SSL_PROTOCOL_ERROR

什么是网络::: ERR_HTTP2_PROTOCOL_ERROR?

如何从ASP.NET MVC 3控制器返回200 HTTP状态代码

ERR_SPDY_PROTOCOL_ERROR Ajax .net Web API

Angular2-HTTP 200被视为错误

100个用户工作正常,而200个用户工作正常,则出现“ javax.net.ssl.SSLHandshakeException”错误,并显示“握手期间远程主机关闭连接”消息

设置https后的Django站点ERR_SSL_PROTOCOL_ERROR

log4net-断开连接后如何重新建立与数据库的连接

与API ERR_SSL_PROTOCOL_ERROR的Localhost SSL连接

启用数据库后,C#.net Core重新连接到Oracle

代理服务器的net :: ERR_SPDY_PROTOCOL_ERROR 200

更改连接字符串后,ASP.NET Core重新注册dbcontext

Chrome出现了什么问题“ net:无法加载资源:net :: ERR_SPDY_PROTOCOL_ERROR”?

连接建立错误:尝试建立并连接到Websocket服务器时,抛出net :: ERR_SSL_PROTOCOL_ERROR

在ReactJs中使用EventSource消费事件流时,获取net :: ERR_INCOMPLETE_CHUNKED_ENCODING 200

Angular HTTP POST请求抛出net :: ERR_HTTP2_PROTOCOL_ERROR错误

HTTP响应200 1033

WebSocket错误:net :: ERR_SSL_PROTOCOL_ERROR

在HTTP POST上使用net :: ERR_SSL_PROTOCOL_ERROR表示服务器

无法使用AzreADB2C登录我的应用程序。出现浏览器错误:ERR_HTTP2_PROTOCOL_ERROR

导轨电缆连接建立错误:net :: ERR_SSL_PROTOCOL_ERROR

在JUPYTERLAB Azure ML Studio中打开笔记本时出现ERR_HTTP2_PROTOCOL_ERROR

Websocket仅允许200个连接

重新排序连接后,StackExchange Redis .NET客户端未收到消息

Chrome浏览器ERR_QUIC_PROTOCOL_ERROR

检查HTTP代码200的URL

200 ACT HTTP响应

如果statusCode不为200,则从http调用重新调整哪种类型的错误对象?

TOP 榜单

热门标签

归档