我將我的網站發佈到一個IIS服務器,我無法控制,並且我想從代碼隱藏中瞭解,如果它的URL以「http」或「https」開頭。檢查Url是否以「http」或「https」開頭,非安全Url是否可能以「https」開頭?
首先,我想對我的地方這兩種解決方案,都返回正確的值(「HTTP」):
this.Request.Url.Scheme
Request.IsSecureConnection
可以肯定的,我也裝一個安全的SSL連接到自己的電腦的IIS ,併發布了相同的代碼。這兩個代碼也都抓取了正確的值(https)。
但是,當我將其發佈到使用「https」的我公司的IIS服務器時,它將返回爲「http」。
這裏會有什麼問題?我注意到我嘗試的URL可能不會被認爲是一個安全的層,即使它以「https」開頭(當我從谷歌瀏覽器調用頁面時,它不會變成綠色並顯示爲安全),所以也許它不是一個安全層,它只是常規頁面只能以「https」而不是http開頭。這種情況可能嗎?
謝謝。是的,我正在考慮某種代理屏障是可能的。我當然知道用「https」請求替換所有的「http」請求。 但是,從您建議的工具測試中傳遞的網頁。這意味着我實際上是一個安全的網站,但這些代碼塊無論如何都會返回「http」。 據我所知,你基本上說:「有些東西在IIS上負責將請求中的」http「轉換爲」https「,但是你的代碼無法理解,並且就像是http一樣。」那是對的嗎?你有關於如何證明/避免這個問題的想法嗎? –
想象一下,數據通過如下鏈傳輸:用戶 - > Internet - >負載平衡器 - >服務器 - >應用程序。在這種情況下,通常只能通過SSL從用戶傳輸到負載均衡器,但在負載均衡器和應用程序之間不需要麻煩。如果我們想象鏈中的代理,則可以擁有相同的場景。這可能會讓您的應用程序更難以檢查原始方案。然而,通常原始方案將被放置在諸如X-Forwarded-Proto的標題中。這是一個很大的話題,但Google關於X-Forwarded-Proto和SSL卸載。 – cbp
會做。感謝細節。 –