ASP.NET MVC 4项目
如何从HTTP重定向到外部网址 - >来自控制器的HTTPS? 我不能只输入:
var url = @"https://www.someurl.com"
return Redirect(url);
它没有用。
我也试过这个:
var uri = new UriBuilder(url)
{
Scheme = Uri.UriSchemeHttps
};
return Redirect(uri.ToString());
答案 0 :(得分:2)
我偶然发现了同样的问题:我有一个在 https 下运行的MVC网站,我有一些情况需要重定向到一些外部网址,我接收它作为参数,当这个网址时是一个 http 网址 - 说http://www.somethingontheweb.com - 直截了当的
return Redirect("http://www.somethingontheweb.com");
实际上不起作用,因为毕竟它看起来像是重定向到 https ://www.somethingontheweb.com,它通常根本不存在。
仍然不知道为什么会这样,但我发现这个工作:我已经使用了 meta refresh
所以我有一个页面: 〜/ 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>
然后我的Controller代码只是
ViewBag.RedirectUrl = url;
return View("DoRedirect");
答案 1 :(得分:1)
您可以使用RequireHttps属性标记您的操作。您的链接将自动重定向到https
public class AccountController:Controller
{
[RequireHttps]
public ActionResult Login()
{
...
}
}
您可以从代码中重定向到此操作 - RedirectToAction。
此外,您可以查看下一个帖子以获得一些额外的想法 - Redirect HTTP to HTTPS。
答案 2 :(得分:1)
我现在看到一个问题:我用了
return Redirect(url);
但这是一个从Ajax调用的动作(我的错误是不记得它)所以正确的解决方案是使用:
return JavaScript("window.location = '" + url + "'");