欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在.Net?Framework應(yīng)用中請(qǐng)求HTTP2站點(diǎn)的問(wèn)題解析

 更新時(shí)間:2022年07月07日 17:02:29   作者:不忘初心  
隨著各大瀏覽器支持和蘋果的帶頭效應(yīng),HTTP2的應(yīng)用會(huì)越來(lái)越廣泛,但是規(guī)模龐大的.NET?Framework應(yīng)用卻也不能為了連接HTTP2就升級(jí)到NET?Core平臺(tái)。通過(guò)本文提供的方案,可以最小成本的實(shí)現(xiàn).NET?Framework應(yīng)用成功訪問(wèn)HTTP2站點(diǎn),感興趣的朋友跟隨小編一起看看吧

背景介紹

本文的需求背景是對(duì)接蘋果公司的推送服務(wù)(APNS),蘋果在安全方面比較積極,已經(jīng)嚴(yán)格限制API只支持HTTP2。但是我這里的應(yīng)用目前仍然是.NET Framework平臺(tái),所以必須尋找一種解決方案。本文在調(diào)研及驗(yàn)證后,將相關(guān)資料整理出來(lái)供大家參考。

什么是HTTP2及依賴條件

HTTP/2(超文本傳輸協(xié)議第2版,最初命名為HTTP 2.0),簡(jiǎn)稱為h2(基于TLS/1.2或以上版本的加密連接)或h2c(非加密連接)[1],是HTTP協(xié)議的的第二個(gè)主要版本,使用于全球資訊網(wǎng)。

多數(shù)主流瀏覽器已經(jīng)在2015年底支持了該協(xié)議。[9]此外,根據(jù)W3Techs的數(shù)據(jù),截至2021年10月,全球有46.5%的網(wǎng)站支持了HTTP/2。

劃重點(diǎn):HTTP2依賴的TLS協(xié)議版本號(hào)必須大于等于1.2,因此后文就分別針對(duì)Windows系統(tǒng)、Net Framework框架對(duì)HTTP2、TLS1.2的支持情況來(lái)梳理。

Windows 對(duì)HTTP2的支持情況?

調(diào)研結(jié)論:需要Windows Server 2016或者Windows 10及更高版本。

參考資料:https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis

Windows對(duì)TLS1.2的支持情況?

結(jié)論:Windows 8.1、Windows Server 2012 R2、Windows 10、Windows Server 2016 和更高版本的 Windows 在本機(jī)支持 TLS 1.2。

參考資料:https://docs.microsoft.com/zh-cn/mem/configmgr/core/plan-design/security/enable-tls-1-2-client

.Net Framework對(duì)HTTP2的支持情況?

結(jié)論:不支持!但是有解決方案:安裝nuget包System.Net.Http.WinHttpHandler

參考資料:https://github.com/dotnet/runtime/issues/31217

nuget包介紹如圖所示:

根據(jù)簡(jiǎn)介可以得知:該nuget包是將Windows系統(tǒng)的WinHTTP接口封裝,也就是說(shuō)程序發(fā)起HTTP請(qǐng)求是通過(guò)Windows實(shí)現(xiàn),而不是HttpClientHandler。而根據(jù)前面的調(diào)研,Windows對(duì)HTTP2和TLS1.2的支持情況已經(jīng)非常明確。

.Net Framework對(duì)TLS1.2的支持情況?

結(jié)論:框架.Net Framework 4.6.2及以上支持tls1.2

參考資料:https://docs.microsoft.com/zh-cn/mem/configmgr/core/plan-design/security/enable-tls-1-2-client

核心代碼片段

現(xiàn)在確保Windows系統(tǒng)能夠滿足最低要求 ,即可編寫測(cè)試應(yīng)用來(lái)驗(yàn)證請(qǐng)求。下面是代碼片段,我在Windows Server 2016+.NET Framework 4.8環(huán)境可以請(qǐng)求成功。

try
{
    string url = "https://api.push.apple.com" + (":443") + "/3/device/" + appleDeviceToken;
    var req = new HttpRequestMessage(HttpMethod.Post, url);
    req.Version = new Version(2, 0);
    req.Content = new JsonContent("{}");
    var resp = httpClient.SendAsync(req).Result;
    string respContent = resp.Content.ReadAsStringAsync().Result;
    this.outputBox.Text += respContent;
}
catch (Exception ex)
{
    this.exceptionBox.Text = ex.ToString();
}

總結(jié)

隨著各大瀏覽器支持和蘋果的帶頭效應(yīng),HTTP2的應(yīng)用會(huì)越來(lái)越廣泛,但是規(guī)模龐大的.NET Framework應(yīng)用卻也不能為了連接HTTP2就升級(jí)到NET Core平臺(tái)。通過(guò)本文提供的方案,可以最小成本的實(shí)現(xiàn).NET Framework應(yīng)用成功訪問(wèn)HTTP2站點(diǎn)。

到此這篇關(guān)于如何在.Net Framework應(yīng)用中請(qǐng)求HTTP2站點(diǎn)的文章就介紹到這了,更多相關(guān).Net Framework請(qǐng)求HTTP2站點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論