我有一个网站,该网站带有HTTPS CloudFront前端,可以通过HTTP转发到IIS网站。
在应用程序的各个位置,REMOTE_ADDR标头用于安全日志记录等。
此标头显然不能通过CloudFront正常工作,因为它将是Cloudfront服务器,而不是实际的远程客户端地址。
为避免必须对应用程序代码进行大量更改,我想做的是重写REMOTE_ADDR的值并将其设置为HTTP_X_FORWARDED_FOR的值。
为此,我打算将这段代码放在Global.asax.vb BeginRequest处理程序中...
Dim remote_address = HttpContext.Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If Not String.IsNullOrEmpty(remote_address) Then
HttpContext.Current.Request.ServerVariables.Set("REMOTE_ADDR", remote_address)
End If
有什么理由不希望这样做吗?
这似乎应该允许应用程序继续正常运行,而不必知道它是由客户端直接调用还是通过CloudFront调用。