当我调试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

这些选项卡中没有预览和响应数据。


当前回答

这可能是由缓存的https重定向引起的,可以通过手动清除缓存来修复,如Adiyat Mubarak的回答。

但如果你访问localhost,你可能是一个开发人员,在这种情况下,你会发现一个缓存清理chrome扩展,如“经典缓存杀手”(见例如https://chrome.google.com/webstore/search/classic%20cache%20killer?hl=en)在各种情况下很有用,很可能已经安装了一个。

因此,快速解决方案是:安装一个缓存杀手(如果您还没有),打开它,然后重新加载页面。完成了!

其他回答

我也面临着同样的问题,但只是在Chrome金丝雀和寻找一个解决方案,我发现了这篇文章。

下一个版本的Chrome将强制所有以。dev(和。foo)结尾的域通过预加载的HTTP严格传输安全(HSTS)头重定向到HTTPs。

{ "name": "dev", "include_subdomains": true, "mode": "force-https" },
{ "name": "foo", "include_subdomains": true, "mode": "force-https" },

所以,改变你的域名。

我从来没有找到问题的根源,但我能够解决这个问题。 我删除了谷歌Chrome应用程序缓存文件夹,解决了这个问题。

C: \用户[用户]\ AppData \ Local的谷歌的Chrome

对于像我这样在本地主机上运行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()
    }
  })

这可能是由缓存的https重定向引起的,可以通过手动清除缓存来修复,如Adiyat Mubarak的回答。

但如果你访问localhost,你可能是一个开发人员,在这种情况下,你会发现一个缓存清理chrome扩展,如“经典缓存杀手”(见例如https://chrome.google.com/webstore/search/classic%20cache%20killer?hl=en)在各种情况下很有用,很可能已经安装了一个。

因此,快速解决方案是:安装一个缓存杀手(如果您还没有),打开它,然后重新加载页面。完成了!

我相信这是由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。