我在一个本地服务器上工作,我需要一个特定的URL来通过HTTPS访问,而其余的通过HTTP访问。我已将Visual Studio配置为使用IIS Express,以便可以使用HTTP/SSL。
我有一个这样的方法:
[RequireHttps]
public ActionResult SomeHttpsMethod()
{
//Do something
}在另一个地方,我有:
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController", new { someParams }, Request.Url.Scheme);如果我使用HTTP访问我的站点,也就是http://localhost:httpport,我仍然会得到从Request.Url.Scheme返回的HTTP而不是HTTPS。这就是它的工作方式吗?
显然,如果我使用HTTPS访问我的站点,即首先使用https://localhost:sslport,返回HTTPS (这是我想要的),但我不想必须访问HTTPS中的站点,只访问特定的URL/控制器方法。
发布于 2014-09-04 22:25:18
这一行:
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController",
new { someParams }, Request.Url.Scheme);根据当前请求的方案构造一个URL,即HTTP。Request总是指当前的请求。
你最好在这个地方硬编码"https“,因为你总是希望它是安全的:
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController",
new { someParams }, "https");发布于 2017-08-24 17:24:43
在我的例子中,这是由于在ARR服务器上设置了错误的规则。如果你得到的是HTTP而不是HTTPS,那就是一些值得注意的东西。
https://stackoverflow.com/questions/25667898
复制相似问题