问题标签 [http2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-chrome - 如何使用 chrome 从 gRPC 服务器获取日期
我通过http://www.chromium.org/spdy/http2发现 Chrome 可以使用 HTTP2.0 。但是如何使用 chrome 从 gRPC 服务器获取数据?
http - 对于服务到服务的通信,http2 是否比 http1.1 有性能优势?
我只是很好奇我是否在 http2 中遗漏了一些可以提高服务到服务通信效率的东西,例如在微服务架构中。
它的改进仅与最终用户(浏览器)有关吗?
google-chrome - HTTP2 HAR 导出在 chrome 中显示 HTTP 版本“未知”?
我正在查看来自 Chrome 版本 41.0.2272.104(64 位)的网络请求,并看到了对 Google Analytics 收集端点的请求的好奇心:
有几个我不认识的标题::authority:
, :method:
, :path:
,:scheme:
:authority:
似乎替换了Host
HTTP 1.x 的标头,:method:
我希望是 HTTP 动词,而不是标头
Chrome 的 HAR 导出报告 HTTP 版本为“未知” - 请参阅http://pastebin.com/1LjRVeHb
这是怎么回事?
spdy - 没有 SPDY 的 HTTP/2 是否可行?
大多数浏览器都支持 HTTP/2,一些服务器也支持。
例如,Akamai 提供了一个 HTTP/2 测试页面 ( https://http2.akamai.com/ )。当我在 chrome 中访问此页面并转到chrome://net-internals/#spdy
使用协议 h2-14(HTTP/2 草案 14)列出的页面时。但是,当我在 akamai 页面上打开控制台并键入window.chrome.loadTimes()
属性wasFetchedViaSpdy
时true
。为什么是这样?Akamai 页面是 HTTP/2,而不是 SPDY,对吧?
我不明白的另一件事是本教程(https://www.gatherdigital.co.uk/blog/how-to-setup-http-2-support/527)。它说:
“如何设置 HTTP/2 支持(nginx、apache、plesk)[...] 嗯,不完全是 HTTP/2,它仍然是 mod_spdy。”
这个 HTTP/2 “over” SPDY 是什么?我提出问题的原因是我想对哪些页面使用哪种协议进行一些测量。
jetty - Jetty HTTP2 服务器推送支持
对于 SPDY,我们需要实现一个 PushStrategy 并注册它来推送资源。
HTTP2 支持怎么样?
我喜欢 nginx 的想法,它包括读取 HTTP 响应中的链接头:https ://nghttp2.org/blog/2015/02/10/nghttp2-dot-org-enabled-http2-server-push/
谢谢!
server-push - 当资源在缓存中时,浏览器是否取消服务器推送?
HTTP/2 规范表明,如果客户端取消它,在 PUSH_PROMISE 帧中标识的任何资源都不会被推送。
当浏览器检测到资源已经在缓存中时,它应该取消对该资源的推送。但是,我看不到浏览器如何检测到它。框架是否提供额外的信息,如 etag 或最后修改,以允许浏览器检测是否必须驱逐任何缓存条目或是否可以取消推送?
如果可能的话,可以节省一些带宽。但是,似乎服务器推送会损害任何客户端缓存优化。
tomcat - Tomcat 8 中的 HTTP/2 支持
经过一番研究,我很惊讶在 Tomcat 中没有找到任何关于 HTTP/2 支持的资源。8.0 的变更日志表明对 SPDY 的实验性支持,wiki 将 HTTP/2 称为受支持的规范(http://wiki.apache.org/tomcat/Specifications),但我没有找到任何关于它的教程。
你知道是否已经可以在 Tomcat 上启用 HTTP/2 吗?如果答案是肯定的,我该怎么做?
http - 多种协议 - 正确实施
我正在检查我的浏览器和谷歌之间的一些 HTTP 交换,它引发了这个问题。
简而言之,我的浏览器(Firefox 36.0.4)正在发出 HTTP/1.1 请求,而 Google 正在以 HTTP/2.0 响应;在请求的协议中没有尝试响应。我知道大部分 HTTP/2.0 规范已经通过 SPDY 以随意的方式实现了,但这似乎是与客户端的糟糕协商。
我认为在标头中声明协议的目的是服务器能够确定它应该如何响应客户端,这是通过以下三种方式之一:
1.客户端已经请求了服务器的首选协议,所以服务器正常继续请求
2.客户端请求了服务器支持的另一个协议版本,服务器在请求协议中响应,但包含一个升级标头,指示其首选协议。客户端可以请求升级,此时服务器将发送 101 Switching Protocols 响应并切换到首选协议。
3.客户端请求了不支持或过时的协议,服务器在升级标头中发送 426 Upgrade Required 响应,并带有支持的协议(按优先级降序排列);客户端必须使用支持的协议重复请求。
4.客户端重用了完全不支持的主要协议版本;例如 HTTP/2.x 而服务器只支持 HTTP/1.x。服务器响应 505 HTTP Version Not Supported
与谷歌的交流不是这样做的;这是不好的做法还是我错过了什么?
随机选择的示例:
jetty - 使用 maven-jetty-plugin 启用 HTTP2
我已经使用码头启用了基于 SSL 的 HTTP/2 连接器。当我尝试连接浏览器时,出现“ERR_SSL_PROTOCOL_ERROR”错误。如果我切换到 HTTP/1.1 连接器,一切正常。
这是我的码头配置文件:
我正在使用 jetty-server、http2-server 和 jetty-alpn-server 工件版本 9.3.0.M1,是否需要添加任何其他依赖项?我正在使用JDK7。
谢谢
java - Java HTTP/2 服务器套接字
我想让服务器套接字在 Java 中为 HTTP/2 工作,最好是 TLS/https。
我的 TLS 服务器套接字工作正常,但浏览器只会与它通信 HTTP/1.1。如果我理解正确,您需要 ALPN 来获取 HTTP/2 浏览器以连接到您的 TLS 套接字并开始在其上运行 HTTP/2;浏览器不会要求在 https 上升级到 HTTP/2。到目前为止,Java8 似乎还没有做 ALPN。也许还有其他方法可以强制浏览器执行 HTTP/2,至少是非 TLS。
那么,有人知道如何为 HTTP/2 制作 Java 服务器套接字吗?