asp.net-mvc – ASP MVC 3 RequireHttps属性将所有链接更改为htt
我有一个ASP MVC 3网站,它有一个反馈表,应该要求SSL.
现在,我在名为“ContactUs”的控制器内部有一个名为Feedback的操作,负责查看和处理反馈. 当我在该操作上使用[RequireHttps]属性时,它运行良好,并将URL更改为“https”.但是,我注意到我页面中的所有链接现在都指向“https”!好像这个属性迫使路由引擎将相同的内容应用到所有链接! 当然,只有这个单一动作才需要SSL,其余的都需要正常的http. 谁能告诉我如何解决这个问题? 解决方法
在您的情况下,如果您清除登录cookie,[RequireHttp]属性可能没问题 – 或者您将通过网络以明文形式发送它.为避免进一步HTTPS调用的轻微成本,可能需要做更多工作而不是值得.所有关于回收问题的内容都是如此,阅读问题的其他用户可能认为在登录后下载到HTTP是可以的,这通常是错误的.
可以在控制器类型或操作方法上使用[RequireHttps]属性来说“只能通过SSL访问”.对控制器或操作的非SSL请求将被重定向到SSL版本(如果是HTTP GET)或被拒绝(如果是HTTP POST).您可以覆盖RequireHttpsAttribute并根据需要更改此行为.内置的[RequireHttp]属性没有相反的功能,但如果您愿意,可以轻松制作自己的属性. 还有Html.ActionLink()的重载,它采用协议参数;您可以明确指定“http”或“https”作为协议.这是一个超载的MSDN documentation.如果您没有指定协议或者如果您调用没有协议参数的重载,则假定您希望链接具有与当前请求相同的协议. 我们在MVC中没有[RequireHttp]属性的原因是它没有太大的好处.它不像[RequireHttps]那么有趣,它鼓励用户做错事.例如,许多网站通过SSL登录并在您登录后重定向回HTTP,这绝对是错误的做法.您的登录cookie与您的用户名密码一样秘密,现在您可以通过网络以明文形式发送它.此外,在运行MVC管道之前,您已经花时间执行握手并保护通道(这是使HTTPS比HTTP慢的大部分),因此[RequireHttp]将不会发出当前请求或未来要求更快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net 大文件上传控件
- ASP.NET JSON字符串与实体类的互转换示例代码
- ASP.NET用户控件列表/集合/数组属性
- 是否可以更改ASP.NET MVC 3路由约束,以便它们返回带有JSON主
- ASP.NET MVC在IIS7下发布无法显示的解决办法
- asp.net-mvc – 基于Route Params的ASP.NET MVC授权
- 让 .NET 轻松构建中间件模式代码
- asp.net-mvc – ASP MVC 3支持多行编辑
- 由于ErrorCode =’0x80004005:80008083,.NET Core应用程序
- asp.net-mvc – 带SelectList Design Decison的ViewModels
- asp.net-mvc – 为什么ValidateInput(False)不工
- asp.net-mvc – 使用实体框架的没有存储库模式的
- asp.net – DOM异常:INVALID_CHARACTER_ERR(5)[
- 配置多个.Net应用程序的最佳方法
- asp.net – 管理web.config文件
- asp.net-mvc – 如何在ASP.NET MVC 3中更新复杂模
- asp.net-mvc – 无法获得有效的Unity Session Li
- asp.net-mvc – 为什么MVC控制器必须在其类名上具
- asp.net-mvc – 准备我的ASP.NET/MVC网站使用SSL
- asp.net – Internet Explorer 11在服务器端的检