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

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


当前回答

为像我这样的懒人(在Chrome 67中工作)提供了一个懒惰和快速的解决方案。

只需在隐身模式下启动另一个Chrome窗口,使用“隐身窗口”选项(CTRL + SHIFT + N)。不需要删除缓存,不需要深入Chrome设置等。

其他回答

不幸的是,这里列出的解决方案都不能帮助我解决这个问题。我通过使用http://127.0.0.1 (ip地址)而不是http://localhost修复了这个问题。一个用chrome浏览器进行角开发的小技巧。

这不是解决办法,只是个变通办法。

在解决方案资源管理器中单击visual studio项目(顶级),然后转到属性窗口。 将“SSL Enabled”更改为“true”。您现在将在属性窗口中看到另一个端口号为“SSL URL”。 现在,当您运行应用程序(或在浏览器中运行视图)时,您必须手动将端口号更改为地址栏中的SSL端口号。

现在它作为SSL链接工作得很好

尝试了上面提到的所有方法(浏览器首选项、hsts等),但都不适合我。

我通过在主机别名后面添加一个.localhost来解决这个问题。在我的例子中,这个文件在windows下:%windir%\system32\drivers\etc\hosts

是这样的:

127.0.0.1    myproject.localhost
127.0.0.1    dev.project.localhost

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

在我的例子中,我把我的项目路径设置为/Users/me/dev/project_root/,并从那里运行nodeJS/express服务器。 将我的路径重命名为/Users/me/project_root(将dev从项目路径中移除)解决了这个问题。

这很可能与这项新规定有关:

Chrome 63(自2017年12月发布)将强制所有以。dev(和。foo)结尾的域通过预加载的HTTP严格传输安全(HSTS)头重定向到HTTPS。

你可以在这里找到更多信息。

使用:

谷歌Chrome版本70.0.3538.110(正式版本)(64位) nodeJS v9.2.0