当我调试Visual Studio项目使用Chrome浏览器尝试重定向到https相当于我的web地址。我没有在web项目中启用SSL,并且开始URL是http URL。当我使用FireFox或IE进行调试时,我没有这个问题。
我重新安装了Chrome浏览器,解决了这个问题一天。没有下载任何插件的问题再次发生了第二天。
什么是使Chrome重定向localhost到https?
网络巡检显示:
请求URL:数据:text / html, chromewebdata
请求头
显示临时标题
User-Agent:Mozilla/5.0 (Windows NT 6.3;WOW64) AppleWebKit/537.36 (KHTML,像Gecko) Chrome/36.0.1985.143 Safari/537.36
这些选项卡中没有预览和响应数据。
我相信这是由HSTS引起的-见http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
如果你有(开发)任何其他发送HSTS头的本地主机站点…
例如:Strict-Transport-Security: max-age=31536000;includeSubDomains;预加载
... 然后根据max-age的值,未来对localhost的请求将需要通过HTTPS服务。
为了解决这个问题,我做了以下工作。
在Chrome地址栏输入以下内容:
chrome: / / net-internals / # hst
在页面的最底部有一个QUERY域文本框-验证浏览器是否知道localhost。如果它说“未找到”,那么这不是你要寻找的答案。
如果是,使用上面的文本框删除localhost域
您的站点现在应该使用普通的旧HTTP工作
这不是一个永久的解决方案,但至少可以让它在项目之间工作。如果有人知道如何从HSTS列表中永久排除localhost,请让我知道:)
更新- 2017年11月
Chrome最近把这个设置移到了这个部分下面
删除域安全策略
更新- 2017年12月
如果您正在使用。dev域,请参阅下面的其他答案,因为Chrome(和其他)通过预加载的HSTS强制HTTPS。
我也面临着同样的问题,但只是在Chrome金丝雀和寻找一个解决方案,我发现了这篇文章。
下一个版本的Chrome将强制所有以。dev(和。foo)结尾的域通过预加载的HTTP严格传输安全(HSTS)头重定向到HTTPs。
{ "name": "dev", "include_subdomains": true, "mode": "force-https" },
{ "name": "foo", "include_subdomains": true, "mode": "force-https" },
所以,改变你的域名。
The issue could be replicated in VS 2019 also. This is caused due to "Enable Javascript debugging from Visual Studio IDE". The VS attaches to Chrome and it is a possibility that due to security or reasons known to Google and Microsoft, it sometimes fails to attach and you have this issue. I am able to run http and https with localhost from ASP net core 3.1 app. So while debugging in VS, go to the run with arrow -> IIS express, just below "Web Browser(Chrome)" select "Script Debugging (Disabled)".
参见文章:https://devblogs.microsoft.com/aspnet/client-side-debugging-of-asp-net-projects-in-google-chrome/
https://learn.microsoft.com/en-us/visualstudio/debugger/debugging-web-applications?view=vs-2019
总是退回到微软文档,以获得比谷歌更清楚的问题。
我找不到任何解决办法;而是重定向到我的网络。配置允许我继续工作(localhost),直到我找到导致问题的原因。
这本质上是一个将HTTPS转换为HTTP的重写规则;它似乎已经覆盖了之前将HTTP重定向到HTTPS的规则。
它需要在你的系统中。网络服务器> < /系统。web.config中的webServer>部分
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
对于像我这样在本地主机上运行Node.js express服务器的人来说,我有这段代码可以将http重定向到https:
const server = express()
.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] != 'https') {
res.redirect('https://' + req.headers.host + req.url)
} else {
next()
}
})
你必须确保它不会重定向localhost:
const server = express()
.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] != 'https' && req.headers['host'].indexOf("localhost") == -1) {
res.redirect('https://' + req.headers.host + req.url)
} else {
next()
}
})
如果你碰巧在Wordpress网站上工作,在尝试了这个页面上的所有内容后,http://127.0.0.1/wp-admin仍然被重定向到https://127.0.0.1/wp-admin。试试这个:
进入wp-config.php并替换
定义(' WP_HOME ', ' https://example.com ');
define('WP_SITEURL','https://example.com');
to
定义(' WP_HOME ', ' http://127.0.0.1 ');
define('WP_SITEURL','http://127.0.0.1');
在Chrome和Firefox上测试。