ASP.NET MVC 4 项目
如何从控制器重定向到来自 HTTP--> HTTPS 的外部 url?我不能只输入:
var url = @"https://www.someurl.com"
return Redirect(url);
它不起作用。
我也试过这个:
var uri = new UriBuilder(url)
{
Scheme = Uri.UriSchemeHttps
};
return Redirect(uri.ToString());
ASP.NET MVC 4 项目
如何从控制器重定向到来自 HTTP--> HTTPS 的外部 url?我不能只输入:
var url = @"https://www.someurl.com"
return Redirect(url);
它不起作用。
我也试过这个:
var uri = new UriBuilder(url)
{
Scheme = Uri.UriSchemeHttps
};
return Redirect(uri.ToString());
好吧,我偶然发现了同样的问题:我有一个在https下运行的 MVC 网站,并且在某些情况下,我需要重定向到作为参数接收的一些外部 url,并且当该 url 是http url 时 - 比如说http:// www.somethingontheweb.com - 直截了当
return Redirect("http://www.somethingontheweb.com");
实际上不起作用,因为毕竟看起来这个重定向到https://www.somethingontheweb.com通常根本不存在。
仍然不知道为什么它会这样工作,但我发现了这个解决方法:我已经诉诸 元刷新
所以我有一个页面:~/Views/Shared/DoRedirect.cshtml,这是它的代码:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=@ViewBag.RedirectUrl" />
<title>redirecting</title>
</head>
<body>
<p>redirecting...</p>
</body>
</html>
然后我的控制器代码就是
ViewBag.RedirectUrl = url;
return View("DoRedirect");
您可以使用RequireHttps属性标记您的操作。您的链接将自动重定向到 https
public class AccountController:Controller
{
[RequireHttps]
public ActionResult Login()
{
...
}
}
您可以从您的代码重定向到此操作 - RedirectToAction。
此外,您可以检查下一个线程以获得一些额外的想法 -将 HTTP 重定向到 HTTPS。
我现在看到一个问题:我用过
return Redirect(url);
但这是从 Ajax 调用的一个动作(我的错误不记得它)所以正确的解决方案是使用:
return JavaScript("window.location = '" + url + "'");