我們正在使用ASP.NET Web Helpers Library 3.2.2(Nuget Link)正在開發一個Web應用程序,該應用程序將在亞馬遜上運行在一個Elastic負載平衡器(ELB)。如何使Microsoft.Web.Helpers.ReCaptcha與X-Forwarded-Proto合作
看起來ELB和Web服務器之間發送的所有請求都是未加密的。這會導致context.Request.IsSecureConnection爲false。
就瀏覽器而言,請求是安全的,它會顯示https://並按預期方式通過端口443。
Web Helper Library中的以下代碼在預期所有資源的安全連接時都會導致一些瀏覽器警告/錯誤。
UrlBuilder urlBuilder =
new UrlBuilder(context.Request.IsSecureConnection
? "https://www.google.com/recaptcha/api" :
"http://www.google.com/recaptcha/api");
問題:如果我能做些什麼呢?如果沒有用本土的ReCaptcha助手替換這個助手,有什麼辦法可以強制context.Request.IsSecureConnection在瀏覽器和ELB之間是安全連接時是真的嗎?
我們使用context.Request.Headers["X-Forwarded-Proto"]
來確定它是否在我們有控制權的其他地方的安全連接上。
什麼使用你的問題中包含的UriBuilder?它是作爲響應重定向返回到瀏覽器還是該庫在內部調用對該地址的Web請求? – 2014-11-05 20:41:37
它被用於生成放置在網頁上的ReCaptcha嵌入代碼。它會以該urlBuilder的字符串表示形式作爲源創建一個iframe。 – 2014-11-05 20:44:33