混合的http / https网站

时间:2009-04-17 18:44:52

标签: asp.net-mvc https azure cloud

到目前为止,我的https部署通常涉及使用https对整个站点进行简单锁定,并在Web服务器上提供http-to-https重定向。

我现在计划在一个包含http和https页面的单个ASP.NET MVC站点(在云上)。因此,该站点将有2个概念(非物理)区域,提供安全和非安全请求。

配置方面,我已经为80和443设置了输入端口,并且该站点接受了这两个请求。

对于任何属于安全区域的操作的调用,有没有办法可以将协议转换为https?例如,动作过滤器可以执行的操作。

非常感谢。

编辑 请注意,这样做的全部意图是避免在表格操作属性上使用绝对网址,因为可移植性问题以及用户不会看到https://保证浏览器上的视觉提示。

P

2 个答案:

答案 0 :(得分:7)

您可能想看一下来自Microsoft available for download here.

的MVC期货装配

这有一个FilterAttribute,RequireSslFilterAttribute,允许您在控制器中轻松标记需要SSL的Action方法 - 例如。

[RequireSsl(Redirect=true)]
public ActionResult LogOn()
{
  return View();
}

可选的重定向参数将导致请求被重定向到相同的URL,但如果需要,则通过https而不是http。

警告:正如丹尼尔指出的那样,当你点击这个动作时,如果数据被发布到页面的非安全版本可能已经太晚了 - 它已经可能已经受到损害,所以你仍然需要小心使用此功能时,请确保所有敏感数据都通过https发送。 (我刚刚注意到你对丹尼尔的评论,你明白这一点,我会在这里发出警告,让其他人偶然发现这一点!)

编辑:正如Luke所指出的,在MVC2中,此属性现在是核心框架的一部分,并重命名为[RequireHttps]

答案 1 :(得分:0)

  

对于任何属于安全区域的操作的调用,我有什么方法可以将协议转换为https?

简短的回答是否定的,一旦请求通过http发出,它就已经被潜在危害了。您可以要求通过HTTPS发送某些调用(不知道如何执行此操作,因为我暂时没有完成ASP.Net)并且如果不这样做则发送错误。关键是要确定您希望应用程序何时进行跳转,即在登录期间选择HTTPS作为这些表单的操作。这就是'动作过滤器'的意思吗?

相关问题