标签: http2

使用Chrome或Safari强制HTTP/2

有没有办法告诉Chrome或Safari在特定的URL /地址/服务器上使用HTTP/2?

我的意思是通过更改某些设置等,而不是在服务器套接字上实现ALPN或可能需要的任何东西.我想在服务器套接字上尝试HTTP/2而不等到我可以通过ALPN协商告诉浏览器使用HTTP/2.


澄清:我在Chrome上启用了HTTP/2(通过chrome://标志称为SPDY/4).它仍然不会通过升级探测HTTP/2的我的(TLS或明文)套接字.我想强迫Chrome执行此操作,或者立即采用HTTP/2.

此外,我已经读过,即使HTTP/2标准允许,Chrome也不会支持纯文本连接上的HTTP/2.但也许有一些解决方法.

safari google-chrome http2

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

使用单个HTTP/2连接进行双向(和对称)通信

HTTP/2引入了一些非常有趣的功能,例如流水线操作,多路复用和服务器推送承诺; 这本身就很棒.作为回报,我们牺牲了WebSockets.

理论上,HTTP/2允许以推送承诺的形式在服务器和客户端之间进行双向通信.服务器甚至可以在被要求之前向客户端发送响应.再次; 真棒.这些请求虽然与客户的请求不同.

所以,眼下的问题:
有没有办法有一个单一的 HTTP/2接口,允许服务器和客户端任意消息(二进制的加分)发送到彼此,而不需要定义不同的协议,用于客户端发送的消息服务器发送消息

WebSockets是我正在寻找的一个很好的例子,因为任何一方都可以启动连接,然后两者都可以发送消息.

不破坏HTTP/2的解决方案将是理想的,但也欢迎协议滥用.
非常感谢你提前.

PS.本练习的目的是确定是否可以在没有服务器/客户端体系结构的情况下在HTTP/2之上设计传输协议(如GRPC,Thrift等),但是双方都可以发送和接收消息等功能,例如req/resp,pub/sub,rpc等可以构建在上面.

architecture network-protocols http2

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

ASP.NET 4.6不会在HTTP2(azure网站)中转换响应

我已经将我的网站设置为asp.net 4.6运行时,网站只能在https中访问,因此满足了这两个要求.我也使用支持浏览器的浏览器访问了网站,如Chrome或IE11.该网站也作为Microsoft Azure网站托管

我使用以下网站作为参考 https://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/812http://www.dotnetcurry.com/aspnet/1127/aspnet-webforms -新功能

不幸的是我无法与你分享网站,因为它是一个客户端,我想他不喜欢这样.

我的问题是,有没有人已经在Azure上使用HTTP2,可能有一些提示或输入给我?谢谢!

asp.net azure azure-web-sites http2

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

为什么Ubuntu 16.04上不存在apache2模块http2?

我想安装htt2_module.按照此链接中列出的步骤重新安装Ubuntu 14.04后,我尝试启用http2_module刚刚运行

sudo a2enmod http2
Run Code Online (Sandbox Code Playgroud)

但我得到:模块http2不存在!

安装的apache版本是:Apache/2.4.7,然后作为一种解决方法我尝试使用此链接添加以下存储库

sudo add-apt-repository ppa:ondrej/apache2
Run Code Online (Sandbox Code Playgroud)

用sudo apt-get update刷新后,再次运行命令安装/启用http2我得到了同样的错误.模块http2不存在.

apache2 ubuntu-14.04 http2

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

NSURLSession HTTP/2内存泄漏

这个My Test案例指出,当使用带有HTTP/2连接的NSURLSession时,存在内存问题.

test1:iOS 9. HTTP/2服务器

我使用NSURLSession将10M文件上传到HTTP/2服务器,如果上传的文件完成一切正常,但如果我在完成之前取消上传任务,10M将永远不会释放.

test2:iOS 9. HTTPs1.1服务器

我用https1.1文件服务器测试相同的代码,我是否取消上传任务,一切正常,内存恢复正常.(10M数据发布)

test3 iOS 8. HTTP/2服务器

这种情况一切正常.(NSURLSession没有协议协商到HTTP/2)

所以,即使有一些不适合我使用NSURLSession的东西,NSURLSession的性能也不适用于HTTP/2.

除了内存问题,当使用带有HTTP/2的NSURLSession上传文件时,进度段大小是巨大的(一次回调可能是5M'addSendBodyData')

我也读过这个页面.SSL可能会缓存一些东西,但不应该缓存整个文件.(当我取消任务或请求超时时,10M文件大小的内存泄漏)

任何人都知道导致问题的原因,可以给我一些帮助.谢谢.


问题更新0912:添加测试项目链接

测试项目:https://github.com/upyun/swift-sdk/tree/testleak

file:UPUtils.swift
//Change the url to make comparison test. 

//let DEFAULT_UPYUN_FORM_API_DOMAIN = "http://v0.api.upyun.com"//http1.1
//let DEFAULT_UPYUN_FORM_API_DOMAIN = "https://httpbin.org/post" //https1.1
let DEFAULT_UPYUN_FORM_API_DOMAIN = "https://v0.api.upyun.com"//http2
Run Code Online (Sandbox Code Playgroud)

memory-leaks ios nsurlsession http2 nsurlsessiondatatask

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

Golang:http2和TLS握手错误

我有一个Go应用程序,启用了http(在端口80上)和https(在端口443上).

我不断收到很多这三种错误:

  • http2: server: error reading preface from client 79.49.31.60:37993: timeout waiting for client preface

  • http: TLS handshake error from 151.38.29.250:44235: EOF

  • http: TLS handshake error from 2.239.197.163:6742: read tcp x.xxx.xxx.xxx:443->2.239.197.163:6742: i/o timeout

任何人都可以解释这些是指什么?

请注意:所有这些请求都来自移动浏览器(在Android和iOS设备上)

ssl https go sslhandshakeexception http2

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

通过http/2服务S3资源

我们正在构建的网络应用程序通过S3提供大量资产.在Chrome中查看它们时,它们是通过HTTP而不是http/2提供的.

是否有S3中的配置设置或我们可以传递的标头,如果客户端支持,它会告诉S3尝试通过http/2提供资产?

我在网上找到有关如何执行此操作的任何资源或是否有可能.

amazon-s3 http2

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

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

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

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

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

HTTP / 2浏览器支持

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

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

protocols browser-support http2

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

是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 一起使用?

我有两个网络服务 - gRPC 客户端和 gRPC 服务器。服务器是用 .NET Core 编写的,因此对 gRPC 强制执行 HTTP/2。但是,客户端是托管在 IIS 8.5 上的 .NET Framework 4.7.2 Web 应用程序,因此它仅支持 HTTP/1.1

由于升级客户端需要一些时间,我在想是否可以在服务器端使用 HTTP/1.1 而不是 HTTP/2,但我找不到任何有关如何实现的信息。

是否可以将 HTTP/1.1 用于用 .NET Core 编写的 gRPC 服务器?如果是这样 - 如何?

c# http-1.1 http2 grpc asp.net-core

9
推荐指数
1
解决办法
3971
查看次数

有什么方法可以处理 HTTP/2 Goaway 在 HttpClient java 中收到的 IOException 吗?

我正在应用程序中进行 API 调用,在某些时候它会随机抛出java.io.IOException: /149.222.1.1:553232: GOAWAY received,使用 Java 11 环境。无论如何要解决此异常而不是迁移到 Http/1.1 或其他 HTTP 客户端库?

这是堆栈跟踪

"com.abcd.common.RequestProcessor:53 getRequest: java.io.IOException: /149.222.1.1:553232: GOAWAY received
    at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:565)
    at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119)
    at com.abcd.common.RequestProcessor.getRequest(RequestProcessor.java:49)
    at com.abcd.common.util.SendApiRequestUtil.sendApiRequestToCMS(SendApiRequestUtil.java:97)
    at com.abcd.controller.ContactsController.getContacts(ContactsController.java:61)
    at jdk.internal.reflect.GeneratedMethodAccessor81.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1651)
    at com.abcd.filter.LogFilter.doFilter(LogFilter.java:26)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
    at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:141)
    at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
    at …
Run Code Online (Sandbox Code Playgroud)

java http http2

9
推荐指数
1
解决办法
9698
查看次数