You*_*usi 7 asp.net-mvc actionlink hyperlink requirehttps
我有一个ASP MVC 3网站,它有一个反馈表,应该要求SSL.
现在,我在名为"ContactUs"的控制器中有一个名为Feedback的操作,负责查看和处理反馈.
当我[RequireHttps]在该操作上使用该属性时,它运行良好,并将URL更改为"https".但是,我注意到我页面中的所有链接现在都指向"https"!好像这个属性迫使路由引擎将相同的内容应用到所有链接!
当然,只有这个单一动作才需要SSL,其余所有动作都需要正常的http.
谁能告诉我如何解决这个问题?
Ric*_*SFT 13
在您的情况下,[RequireHttp]如果您清除登录cookie,则属性可能没问题 - 或者您将通过网络以明文形式发送它.为避免进一步HTTPS调用的轻微成本,可能需要做更多的工作而不是值得.所有关于回收问题的问题和其他阅读问题的用户可能认为在登录后下载到HTTP是可以的,这通常是错误的.
该[RequireHttps]属性可用于控制器类型或操作方法,以表示"这只能通过SSL访问".对控制器或操作的非SSL请求将被重定向到SSL版本(如果是HTTP GET)或被拒绝(如果是HTTP POST).您可以覆盖RequireHttpsAttribute并根据需要更改此行为.[RequireHttp]内置的属性没有相反的功能,但如果您愿意,您可以轻松制作自己的属性.
还有一些重载Html.ActionLink()采用协议参数; 您可以明确指定"http"或"https"作为协议.这是关于一个这样的重载的MSDN文档.如果您没有指定协议或者如果您调用没有协议参数的重载,则假定您希望链接具有与当前请求相同的协议.
我们[RequireHttp]在MVC中没有属性的原因是它没有太大的好处.它没那么有趣[RequireHttps],它鼓励用户做错事.例如,许多网站通过SSL登录并在您登录后重定向回HTTP,这绝对是错误的做法.您的登录cookie与您的用户名+密码一样秘密,现在您通过网络以明文形式发送它.此外,在MVC管道运行之前,您已经花时间执行握手并保护通道(这是使HTTPS比HTTP慢的大部分),因此[RequireHttp]不会使当前请求或将来的请求更快.
| 归档时间: |
|
| 查看次数: |
7271 次 |
| 最近记录: |