.NET 4.6 HttpResponse.PushPromise方法管理http/2 PUSH_PROMISE标头
我对 push prospor promise //msdn.microsoft.com/en-us/library/system.web.httpresponse.pushpromise(V=VS.110).aspx" rel =" nofollow"> http/2 .NET4.6中的标题处理. 当我看时 HttpResponse.PushPromise有两个过载: 接受资源的路径 public void PushPromise(string path) - 然后假设资源将被读取并将二进制发送给客户端. 在接受sting method和NameValueCollection headers我无法理解. 我为什么要通过方法(假设httpmethod喜欢get,post等)和PUSH PROMISE header内部的标头的收集? 解决方案 从阅读http/2 通过该方法 PUSH_PROMISE帧必须为可缓存和 safe .您可以选择使用GET和HEA
8 2024-04-25
编程技术问答社区
如何在Xamarin.Forms上对HTTP2进行调用
grpc for Xamarin.Forms具有.NET Standart 2.0在HTTP2上工作,因此应该某种方法来进行HTTPCLCLIENT调用或重复使用现有的GRPC功能.可能是我缺少一些东西. 示例应用程序复制问题.您需要在某个地方托管GRPC服务. WebClient呼叫位于Web文件夹中的ASP Core 3.1中aboutpage.xaml.cs ASLO测试项目中. xamarinhttp2withbackend githbackend githabend github 流浪说明 microsoft.com- httpclient stack和ssl/tls实现Android 和 stackoverflow.com - 在.NET中使用HTTP 2与HTTPClient一起使用也没有帮助. 对于ASP Core 3.1控制台应用程序,您可以做(Bellow)并起作用.它无法在2.2上工作,较低 AppContext.SetSwitch("Sys
10 2024-04-18
编程技术问答社区
求解HTTP2下载失败的网络错误
环境 ASP.NET网站 .net 4.6.1 Windows Server上的IIS 10.0托管 2016. web.config: 按钮单击: protected void btnDownload_Click(object sender, System.EventArgs e) { try { string sPDFFilename = "doc.pdf"; byte[] data = GetData(); Response.ClearHeaders(); Response.ClearContent(); Response
6 2024-04-18
编程技术问答社区
如何使.net HttpClient使用http 2.0?
我在IIS 10上托管了ASP.NET Web API(Windows Server 2016).当我从Microsoft Edge浏览器向此提出GET请求时,我看到HTTP 2.0在IIS日志中使用 2015-09-20 21:57:59 100.76.48.17 GET /RestController/Native - 443 - 73.181.195.76 HTTP/2.0 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/42.0.2311.135+Safari/537.36+Edge/12.10240 - 200 0 0 7299 但是,当通过a .净4.6客户端如下 using (var client = new HttpClient()) { client.BaseAddress = new Uri("https://myapp.
8 2024-04-11
编程技术问答社区
为什么捆绑优化在HTTP/2中不再是一个问题?
我在捆绑的SystemJS文档的部分文档中阅读了 Bundundling Equiptization in http/2 : 通过http/2,这种方法可能是可取的,因为它允许文件为 在浏览器中单独缓存,含义捆绑式优化是没有的 更长的问题. 我的问题: 这意味着我们不需要考虑使用http/2时捆绑脚本或其他资源? http/2中有什么使此功能启用的? 解决方案 http/2支持"服务器推",该"服务器推"束缚了资源.所以,是的,如果您使用的是http/2,捆绑实际上是一个反图案. 有关更多信息,请查看以下信息: https://https://www. igvita.com/2013/06/12/innovating-with-http-2.0-server-push/ 其他解决方案 使用http/1.1时,将捆绑优化作为"最佳实践"引入,因为浏览器只能打开与特定域的有限数量的连接. 一个典型的网页有30多个资源可下载以渲染. 使用HTTP
6 2024-04-05
编程技术问答社区
通过http/2的单一捆绑与多个文件的最小化对比
关于CSS和JS捆绑的一般建议是什么:最好将所有内容捆绑到一个文件中,还是最好使用多个文件? 我个人说多个文件更好,尤其是使用HTTP/2,但是有充分的捆绑原因:当所有文件都在一个文件中时,Minification and Gzip都会有更好的结果,因为您通常在编写时通常会复发很多代码.在另一侧提供多个文件可改善缓存并允许并行下载,但在可能已缩小的文件中包含平等的代码. 是否有任何好的统计信息可以比较多个和捆绑文件的文件大小,压缩大小和下载时间? 关于这个问题,已经有几个主题在堆栈溢出上,但是我找不到将http/2和minification/gzip牢记的牢记. 解决方案 这是http/2的一些功能,可以减轻串联的益处(来自高性能浏览器网络): 将多个资产捆绑到单个响应中是对HTTP/1.X的关键优化,其中有限的并行性和高协议开销通常超过所有其他关注点,请参阅串联和弹簧.但是,使用HTTP/2,多路复用不再是一个问题,并且标头压缩大大减少了每个HTTP请求
18 2024-04-05
编程技术问答社区
优化文件缓存和HTTP2
我们的网站正在考虑切换到http2. 我的理解是, http2呈现优化技术,例如文件串联过时,因为使用HTTP2的服务器仅发送一个请求. 相反,我看到的建议是,最好保持文件尺寸较小,以便更有可能被浏览器缓存. 这可能取决于网站的大小,但是如果网站使用HTTP2并希望专注于缓存? ,网站的文件应该有多小? 在我们的情况下,我们的许多单独的JS和CSS文件落在1KB至180KB范围内. jQuery和Bootstrap可能更多.累积地,我们网站上一个页面的新下载通常不到900 kb. 所以我有两个问题: 这些文件尺寸是否足够小,可以被浏览器缓存? 如果它们足够小,可以缓存,那么对于使用不支持HTTP2的浏览器的用户来说,连接文件是否很好. 在这种情况下拥有较大的文件大小并使用http2会造成伤害吗?这样,它将使运行任一协议的用户受益,因为可以针对HTTP和HTTP2进行优化网站. . 解决方案 让我们澄清一些事情: 我的理解是http
16 2024-04-04
编程技术问答社区
当同一资源的http2推送正在进行时,触发GET请求会发生什么?
当触发单个获取请求时会发生什么,而同时http2推动是同一资源的飞行? 指定的行为是什么,浏览器实际上是什么? 一个示例场景看起来像这样: at time 0: GET / (get document) and the server pushes /data.json at time 1: GET /data.json (triggered by script, while the h2 push is still not finished / in-flight) 这将导致两个对服务器的调用?该行为是指定的还是浏览器特定的,例如在铬中,也许是通过HTTP缓存: 缓存实现单个作者 - 多个读取器锁定,因此在任何给定时间,只有一个网络请求在飞行中. 文档/Network-stack/http-cache 解决方案 RFC 7540中的http/2规范说: 一旦客户端收到push_promise框架并选择接受 推动响应,客户不应发出任何要求 承诺的响
12 2024-04-04
编程技术问答社区
如何通过javascript检测浏览器环境中是否支持http2?
我想确定是否支持combo,是否支持http2.但是,我找不到检查浏览器是否支持HTTP2的方法. 预先感谢您. 解决方案 导航正时2 API提供此信息: performance.getEntriesByType('navigation')[0].nextHopProtocol 以上应在使用http 2 获取的页面上返回" H2" 关于Nexthopprotocol有限兼容性的注释: 导航正时级2级API当前处于工作草案状态,因此对NexThopprotocol(使用2级API引入)的支持将受到限制(不确定Caniuse当前不包括Navigation Timing级别2 API). 其他解决方案 根据 在浏览器中,http/2受到边缘最新版本的支持, Safari,Firefox和Chrome.其他基于眨眼的浏览器也将 支持HTTP/2(例如Opera和Yandex浏览器).请参阅 caniuse 有关更多详细信息. 其他解决方案 最简
12 2024-04-04
编程技术问答社区
HTTP/2会提高每个主机的连接限制吗?
浏览器对并行XHR的数量具有每主机限制(如今大约6个). 此限制是否适用于多路复用的HTTP/2连接? 解决方案 使用HTTP/1.1时,浏览器会施加6-8连接,具体取决于浏览器实现. 这最多允许每个域的6-8并发请求. 使用HTTP/2,浏览器仅打开每个域的1个连接. 但是,由于HTTP/2协议的多重功能,每个域的并发请求的数量不限于6-8,但实际上是 unlimited. 它是实际上是无限的,因为浏览器和服务器可能会通过 http/2配置参数称为SETTINGS_MAX_CONCURRENT_STREAMS. 典型限制约为100(Firefox的network.http.spdy.default-concurrent默认值 - 在此处注意spdy名称:它是HTTP/2协议的协议祖先),但可能更大(或者不太常见,更小),,取决于浏览器实现以及您连接到的服务器. 期望这些限制随着进化和http/2的广泛使用而有所不同(以http/1.1的方式相同的方
4 2024-04-03
编程技术问答社区
Blazor服务器端项目不再登录
我有许多大麻测试项目,直到几天前才能正常工作.现在他们都没有登录并给出以下错误: 无法联系此网站 网页上的网页 err_http2_protocol_error Visual Studio不会引发错误,并且浏览器控制台中没有错误. (在Edge,Chrome,Opera和Firefox上进行测试) 我随后创建了一个新的默认爆炸应用程序,并且有同样的问题. Visual Studio 2019 16.5.1 .NET CORE 3.1.3,所有Nuget软件包都更新为最新3.1.3版本 有人可以指向正确的方向吗? 解决方案 在aspnet/aspnetcore github存储库中,关于此主题也有类似的对话,事实证明这是一个特定于OS的问题. 在这种特殊情况下,用户正在使用Windows 10的预览版,然后切换到最新版本后,事情开始起作用. 这是对话:希望这会有所帮助!
12 2024-04-01
编程技术问答社区
Azure应用服务中的HTTP/2是否会对传统的浏览器自动回退到HTTP/1.1?
我想为Azure应用程序托管的Web应用程序打开HTTP/2.但是,我1%的用户使用不支持HTTP/2的浏览器. 即使我在? 换句话说, 当在Azure App Service实例中打开http/2时,服务器是否接受浏览器的http/1.1请求? 我检查了Azure App服务公告在这里,但它没有说明自动折扣是否支持. 解决方案 查看文章我知道这篇文章是关于Azure前门服务的,但是如果这使旧浏览器能够退缩,那么App Service也会这样做.当然,App Service都支持1.1和2.0. http/2浏览器支持 所有主要浏览器都在其当前版本中实现了HTTP/2支持.非支撑浏览器会自动退回到http/1.1.
8 2024-03-26
编程技术问答社区
通过AWS ALB的HTTP2 PING帧(gRPC keepalive ping)。
我正在使用AWS应用程序负载平衡器(ALB)来公开ASP.NET Core GRPC服务.这些服务在Fargate容器中运行,并公开无抵押的HTTP端口. ALB终止外部TLS连接,并根据路线将未加密的流量转发到目标组. GRPC应用程序具有多个客户端流端点,客户端可以暂停流媒体几分钟.我知道在这种情况下可以使用HTTP2 ping框架,以使连接保持一段时间没有数据传输的连接. GRPC服务器配置为每20秒钟发送HTTP2 PINGS,以保持连接活力.我测试了这种方法,它起作用了,ping框架从服务器上移动并得到了客户端的认可. 但是,这种方法在ALB方面失败了.在变速箱暂停期间,我看不到负载平衡器后面服务器的任何软件包(我使用Wireshark).然后在1分钟的超时后,ALB重置连接. 我也尝试使用客户端http2 ping.但是连接也在1分钟内重置,我没有证据表明这些Ping软件包是否真的到达了ALB后面的服务器. 我假设AWS ALB不允许这样的数据包经过它,但是我没有
12 2024-03-22
编程技术问答社区
python-requests是否支持HTTP2和异步调用?
我想在服务器中使用python-requredsquests向Apple Push Server发送推送通知,我的问题: python-requrequests是否支持异步调用? Python-Request支持http2? 解决方案 AS 是在beta中,但是1.0版本它支持异步和http/2,并提供与请求兼容的API. 其他解决方案 现在不支持HTTP/2(版本v2.18.1). 如在DOC中( http://docs.pys.python-requests.org/en/master/master/): 请求允许您发送有机的,草食的HTTP/1.1请求,而无需手动劳动. 但是,如果您需要发送http/2请求: 超级支持Python 3.4和Python 2.7.9,可以说HTTP/2和HTTP/1.1. .
8 2024-03-18
编程技术问答社区
有可能在.NET核心中使用带有HTTP/1.1的gRPC吗?
我有两个网络服务 - GRPC客户端和GRPC服务器.服务器用.net core编写,因此,GRPC的HTTP/2是执行的.但是,客户端是一个.NET Framework 4.7.2 Web应用程序,该应用在IIS 8.5,,因此仅支持http/1.1 . ,由于升级客户端需要一些时间,所以我想在服务器端使用HTTP/1.1而不是HTTP/2,但是我找不到任何信息如何实现. 是否可以使用.NET Core编写的GRPC服务器使用HTTP/1.1?如果是这样 - 如何? 解决方案 否,您不能在HTTP 1.1上使用GRPC;但是,您也许可以使用GRPC.CORE Google Transport实现,而不是托管的Microsoft位.这是针对.NET标准1.5和.NET标准2.0的目标,因此应使用.NET Core,并使用特定于OS的非托管二进制(CHTTP2)进行运输. 对于客户端,两者几乎没有区别;只有实际的频道创建在: 之间发生变化 GrpcChanne
12 2024-03-11
编程技术问答社区
在.Net中用HttpClient使用HTTP 2
我正在尝试通过HTTP 2.0请求数据.我正在使用.NET Core 2.2中的HTTPClient.我在Windows 10上,但会在生产中运行Linux.问题在于响应上的版本似乎始终是" 1.1".我做错了什么? using (var client = new HttpClient()) { using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://duckduckgo.com/" )) { request.Version = new Version(2, 0); var response = await client.SendAsync(request); Console.WriteLine(response.Version); } } 解决方案 更新 - .NET CORE 3.0
4 2024-03-11
编程技术问答社区
如何在Visual C#中发送HTTP 2.0请求
我试图在Visual C#中发送HTTP 2.0请求. 我正在使用最新版本.NET框架.在Edge Browser的开发人员工具中,' https://www.google.com '网站显示为http/2 . 但下面的代码将HTTP版本抛出为1.1.我在请求中添加了相关的用户代理字符串.我在这里缺少什么? string html = string.Empty; string url = @TextBox1.Text; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.AutomaticDecompression = DecompressionMethods.GZip; request.Accept = "text/html, application/xhtml+xml, image/jxr,
10 2024-03-10
编程技术问答社区
ASP.Net HTTP2 PushPromise很慢
我正在尝试使用" PushPromise" .NET 4.6.1实现HTTP2推动服务器功能,为此,我使用Razor具有" HTML扩展"(我们没有实现MVC仅使用Razor Engine来构建页面来构建页面). public static IHtmlString PushPromiseStylesheet(this HtmlHelper htmlHelper, string src, bool addDomElement = true) { var context = HttpContext.Current; var path = System.Web.Optimization.Styles.Url(src).ToString(); var headers = new NameValueCollection { { "accept-encoding", context.Request.Headers["accept
8 2024-03-09
编程技术问答社区
HTTP/2是一个无状态协议吗?
从我的理解中,HTTP/2带有一种称为HPACK的状态标头压缩.它不是改变HTTP协议的无状态语义吗? Web应用程序将HTTP/2视为无状态协议是否安全?最后,HTTP/2是否与现有负载平衡器兼容? 解决方案 http/2是无状态的. 原始HTTP是一个无状态协议,这意味着可以隔离地理解每个请求消息.这意味着每个请求都需要随着服务器需要提供该请求的详细信息,而无需服务器必须从以前的请求中存储大量信息和元数据. 由于http/2不会改变此范式,因此必须以相同的方式工作,无状态. 从官方RFCS 也可以看到.它说: 超文本传输​​协议(HTTP)是用于分布式,协作,超媒体信息系统的应用程序级协议.这是一个通用的,无状态的协议,可用于许多任务... 和 http/2 说: 此规范描述了超文本传输​​协议(HTTP)语义的优化表达,称为HTTP版本2(HTTP/2)...此规范是替代的,但并不过时,HTTP/http/http/http/http/1
12 2024-03-03
编程技术问答社区
ALPN回调被放弃。HTTP/2被禁用。IBM Webshere 9 JAVA 8上的 "Alpn-boot是否在引导类路径上"?
需要帮助. 使用OKHTTP3客户端将HTTP2请求发送到Apple Push服务器. 服务器:WebShere 9 Java:8 OKHTTP3:4.8.1 还添加了引导类Path中的Alpn Jar. ALPN JAR版本与BootClassPath中的JDK版本精确映射. 在IBM WebShere 9日志文件中获取此错误消息. alpn回调掉落:禁用HTTP/2.启动类路径上的Alpn-boot是吗? 谢谢您的帮助. 解决方案 如果您可以升级到Java 8U252,那么您将不需要alpn-boot bootclasspath 我建议您首先查看是否可能.
8 2024-03-02
编程技术问答社区