首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Request.Url.Scheme不返回HTTPS?

为什么Request.Url.Scheme不返回HTTPS?
EN

Stack Overflow用户
提问于 2014-09-04 22:20:05
回答 2查看 24.8K关注 0票数 7

我在一个本地服务器上工作,我需要一个特定的URL来通过HTTPS访问,而其余的通过HTTP访问。我已将Visual Studio配置为使用IIS Express,以便可以使用HTTP/SSL。

我有一个这样的方法:

代码语言:javascript
复制
[RequireHttps]
public ActionResult SomeHttpsMethod()
{
     //Do something
}

在另一个地方,我有:

代码语言:javascript
复制
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/控制器方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-04 22:25:18

这一行:

代码语言:javascript
复制
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController", 
    new { someParams }, Request.Url.Scheme);

根据当前请求的方案构造一个URL,即HTTP。Request总是指当前的请求。

你最好在这个地方硬编码"https“,因为你总是希望它是安全的:

代码语言:javascript
复制
var url = Url.Action("SomeHttpsMethod", "SomeHttpsController", 
    new { someParams }, "https");
票数 8
EN

Stack Overflow用户

发布于 2017-08-24 17:24:43

在我的例子中,这是由于在ARR服务器上设置了错误的规则。如果你得到的是HTTP而不是HTTPS,那就是一些值得注意的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25667898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档