gpt4 book ai didi

c# - 远程需要 HTTPS MVC 5

转载 作者:太空宇宙 更新时间:2023-11-03 21:26:12 24 4
gpt4 key购买 nike

我有以下属性来确保远程站点页面以 https 模式打开。

public class RemoteRequireHttpsAttribute : RequireHttpsAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentException("Filter Context");
}

if (filterContext != null && filterContext.HttpContext != null)
{
if (filterContext.HttpContext.Request.IsLocal)
{
return;
}
else
{
string val = ConfigurationManager.AppSettings["RequireSSL"].Trim();
bool requireSsl = bool.Parse(val);
if (!requireSsl)
{
return;
}
}
}

base.OnAuthorization(filterContext);
}
}

本地开发现在可以正常工作,因为我不希望它以 https 模式打开。

开发站点以 https 模式打开页面 - 这里没有问题(单节点)。

我当前正在设置的生产(负载平衡 - 2 个节点)站点出现以下错误。请注意,开发站点和生产站点具有相同的设置和 web.config

The page isn't redirecting properly

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

This problem can sometimes be caused by disabling or refusing to accept cookies.

开发站点 url 就像 http://dev.datalab.something.org

Prod 站点 url 就像 http://datalab.something.org

这是调用

[RemoteRequireHttps]
public ActionResult Index(string returnUrl, string error)

我在这里错过了什么?

更新 1:我的管理员已确认已在 lad balancer 级别设置 SSL 终止。我查看了 iis 站点设置,但没有看到 https 绑定(bind)。我只看到 http 绑定(bind)。他是否也需要设置 https 绑定(bind)?

更新 2:@AlexeiLevenkov 为我指明了正确的方向,this post有我使用的代码并且它正在工作。将代码移动到单独的答案中。

最佳答案

您的网站位于执行 SSL 终止的负载平衡器之后 - 因此无论用户看到什么,您网站的所有传入流量都是 HTTP。这会导致您的代码始终尝试重定向到 HTTPS 版本,从而导致无限循环。

修复选项:

  • 通常,执行 SSL 终止的负载平衡器将通过自定义 header 转发原始 IP/协议(protocol)。 x-forwarded-protox-forwarded-for 是用于此目的的常用方法。如果使用了这些 header 或需要一些额外的配置,您可能需要与网络管理员核实
  • 或者,您可以关闭 SSL 终止,但这会给您的服务器带来额外的负载。
  • 还可以配置负载均衡器,使其与使用与传入请求相同的协议(protocol)的服务器通信。

如何调查此类问题:

  • 查看 http 调试器(如 Fiddler),看看您是否在循环中收到 30 次重定向请求。如果没有重定向 - 可能代码有误。
  • 如果您看到重复的重定向,这可能意味着站点没有看到实际的请求信息 - 可能是协议(protocol)、路径 cookie 丢失。
  • 要继续调查,看看用户和服务器之间有哪些设备(CDN、代理、负载平衡器等)——每个设备都有可能丢失一些数据或转换协议(protocol)。

关于c# - 远程需要 HTTPS MVC 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26849776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com