我们正在使用 ASP.NET Web Helpers Library 3.2.2 (Nuget Link)开发一个将在Elastic Load Balancer(ELB)后面的Amazon上运行的Web应用程序。
看起来ELB和Web服务器之间发送的所有请求都是未加密的。这会导致context.Request.IsSecureConnection为false。
就浏览器而言,请求是安全的,它显示https://并按预期通过端口443。
Web Helpers Library中的以下代码会在期望所有资源的安全连接时导致某些浏览器警告/错误。
UrlBuilder urlBuilder =
new UrlBuilder(context.Request.IsSecureConnection
? "https://www.google.com/recaptcha/api" :
"http://www.google.com/recaptcha/api");
问题:如果我能做些什么呢?如果没有用本地的ReCaptcha助手替换这个ReCaptcha助手,我可以做些什么来强制context.Request.IsSecureConnection在浏览器和ELB之间的安全连接时为真?
我们使用context.Request.Headers["X-Forwarded-Proto"]
来确定它是否在我们可以控制的其他地方的安全连接上。
答案 0 :(得分:2)
让它将嵌入代码渲染为字符串,然后操作字符串以在包含proto标头时更改URL(或将其设置为HTTPS)。