gpt4 book ai didi

asp.net-mvc - ASP MVC 3 RequireHttps 属性将所有链接更改为 https

转载 作者:行者123 更新时间:2023-12-04 10:28:11 25 4
gpt4 key购买 nike

我有一个 ASP MVC 3 网站,它有一个反馈表并且应该需要 SSL。

现在,我在一个名为“ContactUs”的 Controller 中有一个名为“反馈”的操作,该 Controller 负责查看和处理反馈。

当我使用 [RequireHttps]该操作的属性,它工作得很好,它将 URL 更改为“https”。但是,我注意到我页面内的所有链接现在都指向“https”!好像这个属性迫使路由引擎对所有链接都应用相同的属性!!!

当然,SSL 只需要这个单一的 Action ,其余的都需要正常的 http。

谁能告诉我如何解决这个问题?

最佳答案

在你的情况下[RequireHttp]如果您清除登录 cookie,则属性可能没问题 - 或者您将以明文形式通过网络发送它。避免进一步的 HTTPS 调用的轻微成本可能比它值得做的工作更多。 SO 都是关于回收问题的,其他阅读您的问题的用户可能会认为登录后下拉到 HTTP 是可以的,而这通常是错误的做法。
[RequireHttps]属性可以用在 Controller 类型或操作方法上,表示“只能通过 SSL 访问”。对 Controller 或操作的非 SSL 请求将被重定向到 SSL 版本(如果是 HTTP GET)或被拒绝(如果是 HTTP POST)。如果您愿意,您可以覆盖 RequireHttpsAttribute 并更改此行为。没有[RequireHttp]内置的属性相反,但如果您愿意,您可以轻松地制作自己的。

还有Html.ActionLink()的重载采用协议(protocol)参数;您可以明确指定“http”或“https”作为协议(protocol)。这是MSDN documentation在一个这样的过载。如果您未指定协议(protocol)或调用没有协议(protocol)参数的重载,则假定您希望链接具有与当前请求相同的协议(protocol)。

我们没有 [RequireHttp] 的原因MVC 的特点是它并没有太多好处。不如[RequireHttps]有趣,它鼓励用户做错事。例如,许多网站通过 SSL 登录并在您登录后重定向回 HTTP,这绝对是错误的做法 .您的登录 cookie 与您的用户名 + 密码一样保密,现在您通过网络以明文形式发送它。此外,在 MVC 管道运行之前,您已经花时间执行握手和保护 channel (这是使 HTTPS 比 HTTP 慢的主要原因),所以 [RequireHttp]不会使当前请求或将来的请求更快。

关于asp.net-mvc - ASP MVC 3 RequireHttps 属性将所有链接更改为 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719654/

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