如何使Microsoft.Web.Helpers.ReCaptcha与X-Forwarded-Proto一起使用

时间:2014-11-05 20:38:03

标签: c# asp.net-mvc amazon-ec2 recaptcha amazon-elb

我们正在使用 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"]来确定它是否在我们可以控制的其他地方的安全连接上。

1 个答案:

答案 0 :(得分:2)

让它将嵌入代码渲染为字符串,然后操作字符串以在包含proto标头时更改URL(或将其设置为HTTPS)。