确保使用ssl调用操作
本文关键字:调用 操作 ssl 确保 | 更新日期: 2023-09-27 17:51:07
使用c# mvc,我如何确保通过ssl调用特定的Action ?
例如在支付页面上,我的服务器允许https/http,但我想强制用户使用https访问它?
我在想像一个动作过滤器,重定向到https,如果他们不使用它?
这是一个正确的方法吗?
两秒钟后,当然是框架的一部分。
RequireHttpsAttribute
在您的情况下,如果您清除登录cookie, [RequireHttp]
属性可能会奏效—或者您将以明文形式通过网络发送它。为了避免进一步的HTTPS calls.
的轻微成本,这可能比值得做更多的工作,所以都是关于回收问题和其他阅读您的问题的用户可能会认为在登录后下拉到HTTP是可以的,当它通常是错误的事情时。
[RequireHttps]
属性可以用于控制器类型或操作方法,以说"这只能通过SSL访问"。对控制器或操作的非SSL请求将被重定向到SSL版本(如果是HTTP GET)或拒绝(如果是HTTP POST)。如果您愿意,您可以覆盖requirehttpattribute并更改此行为。没有内置的[RequireHttp]属性来做相反的事情,但是如果你愿意,你可以很容易地自己创建一个。
也有重载的Html.ActionLink(),它接受一个协议参数;您可以显式指定"http"或"https"作为协议。下面是MSDN文档中关于这样一个重载的介绍。如果你没有指定协议,或者你调用了一个没有协议参数的重载,它会认为你希望链接与当前请求具有相同的协议。
我们在MVC中没有[RequireHttp]属性的原因是它没有太多的好处。它不像[RequireHttps]那么有趣,而且它鼓励用户做错误的事情。例如,许多网站通过SSL登录并在您登录后重定向回HTTP, 这绝对是错误的事情。你的登录cookie就像你的用户名+密码一样保密,现在你要把它以明文形式发送到网络上。此外,在MVC管道运行之前,您已经花了时间来执行握手和保护通道(这是使HTTPS比HTTP慢的大部分原因),因此[RequireHttp]不会使当前请求或未来的请求更快。