从Angular/JavaScript应用程序进行HTTP2 Ajax调用

3
我正在尝试实现我的服务的http2。我使用了带有ALPN jar的Jetty 9,并根据文档编写了代码。服务器已经启动,我可以从Chrome浏览器版本51访问URL http://localhost:8443/myurl。我使用Chrome扩展HTTP2/SPDY Indicator查看HTTP2请求,它显示请求是HTTP2。当我尝试通过angularjs调用服务时,我无法看到扩展报告HTTP2调用已被执行。这是扩展无法检测Ajax调用的问题吗?还是我需要手动设置任何HTTP2特定标头以激活http2调用?感谢您提供任何帮助。
1个回答

2
Chrome HTTP/2 Indicator扩展可以报告顶级文档是否使用HTTP/2下载。该扩展不会报告XHR调用。
如果在Chrome浏览器中浏览chrome://net-internals/#http2,则可以看到活动的HTTP/2连接,点击您的域的连接将提供附加信息,包括XHR调用。
或者,您可以启用HTTP/2的服务器端DEBUG日志,方法是将org.eclipse.jetty.http2类别设置为DEBUG,然后您将看到XHR调用到达服务器。
您不需要为XHR调用(或Angular为您创建的调用)添加任何特殊的HTTP/2头:浏览器知道是否可以使用HTTP/2,如果可以,则会使用它。

感谢您的支持。我已经尝试从Chrome的Angular JS应用程序中访问https://localhost:8443/myurl,该URL支持HTTP2协议。我创建了一个Cordova项目,安装在使用iOS 9.3版本的iPad上,但是在Jetty服务器端出现以下异常:Caused by: java.lang.IllegalStateException: null at org.eclipse.jetty.alpn.server.ALPNServerConnection.select(ALPNServerConnection.java:87) ~[jetty-alpn-server-9.3.8.v20160314.jar!/:9.3.8.v20160314] at sun.security.ssl.ServerHandshaker.clientHello(ServerHandshaker.java:805) ~[na:1.8.0_91] - Sheeja C
很难说你在做什么... 你可能有错误的服务器配置,或者你正在使用的客户端没有提供足够强的TLS密码套件,这是HTTP/2所要求的。 - sbordet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接