1. 程式人生 > >asp.net 無法獲取客戶端請求的真實協議https

asp.net 無法獲取客戶端請求的真實協議https

sta nbsp 我們 問題: 解決 獲取 無法 server 1.0

問題:

a) 客戶端請求的是https,但服務端Request.Url獲取的卻是http;

b) 負載均衡連接協議服務端與客戶端協議不一致。

有時候我們需要獲取或拼接連接,但是可能會出現客戶端使用https請求但我們獲取的確是http的情況,這個時就無法訪問拼接出來的http連接。

這通常是由於服務器使用負載均衡造成客戶請求使用的協議與服務端接收的協議不一致。

解決辦法:

通過判斷Request.ServerVariable["SERVER_PROTOCOL"] 是否等於HTTP/1.0來確定客戶端真實請求的協議。

string appUrl = Page.Request.Url.AbsoluteUri;
if (Page.Request.ServerVariables["SERVER_PROTOCOL"] == "HTTP/1.0" && appUrl.StartsWith("http:", StringComparison.OrdinalIgnoreCase)) appUrl = "https:" + appUrl.Substring(5);

asp.net 無法獲取客戶端請求的真實協議https