我有一个在ASP.Net MVC4中编写并部署到IIS7.5的网站,用户首先需要在浏览其余网页之前登录,所以例如,这里的源代码如下:
路线:
localhost/project/account/logon
localhost/project/apple
localhost/project/banana
登录方法:
[RequireHttps]
public ActionResult Logon(string returnUrl)
{
...
return View();
}
[HttpPost]
public ActionResult Logon(string user, string pwd, bool remember)
{
...
string url = "/apple";
return Redirect(url);
}
问题是,在用户登录后,我们将用户重定向到使用return Redirect('/apple')
的其他链接时,它还会使用HTTPS https://localhost/project/apple
访问新链接。
如何阻止重定向使用HTTPS?
答案 0 :(得分:1)
您可以使用以下内容:
[HttpPost]
public ActionResult Logon(string user, string pwd, bool remember)
{
var url = Url.Action("someAction", "someController", null, "http");
return Redirect(url);
}
但不要这样做。切勿在未加密的频道上传输会话cookie。一旦用户通过身份验证并向您发送了身份验证cookie,此用户在您网站上执行的所有操作都应通过SSL发送。我还建议您使用secure
标记(web.config中的requireSSL="true"
)发出表单身份验证Cookie。
答案 1 :(得分:0)
您还可以查看IIS Url rewrite以将网址从https地址重定向到http地址。例如,此规则将所有https流量重定向到相应的http端点
<rewrite>
<rules>
<rule name="HTTPS to HTTP" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{SERVER_PORT}" pattern="^443$" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Temporary" />
</rule>
</rules>
</rewrite>