当我调试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应用程序缓存文件夹,解决了这个问题。

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


我相信这是由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浏览器上遇到了同样的问题,我尝试使用BigJump的解决方案,但没有成功。

我通过强制硬刷新来解决这个问题,如本文所示(最初来自SuperUser的回答)。

确保你的地址栏正在使用http方案,然后执行这些步骤,可能需要几次:

打开开发人员工具面板(CTRL+SHIFT+I) 点击并按住重载图标/右键单击重载图标。 将打开一个菜单。 从菜单中选择第三个选项(“空缓存和硬加载”)


我也一直在这个问题上挣扎。看来HSTS只针对域名。所以如果你是在本地机器上开发,使用IP地址要容易得多。所以我从localhost切换到127.0.0.1


@Adiyat Mubarak的回答对我没用。当我试图清除缓存并重新加载时,页面仍然重定向到https。

我的解决方案是:在url栏的右上角(就在收藏夹星形图标的左边)有一个带有“x”的图标。右键单击它,它会显示一些关于“不安全脚本”的内容,然后有一个选项可以加载它们。这样做。


借阿迪亚特·穆巴拉克的东风

不能硬刷新,因为它只是在https上刷新。遵循一些相同的步骤。

1. Open chrome developer tools (ctrl + shift + i)
2. Network Tab at the top
3. Click Disable cache checkbox at the top (right under network tab for me).
4. Refresh page (while the developer tools is still open)

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

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

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

所以,改变你的域名。


对于有同样问题的人,我通过按CTRL + SHIFT + DELETE删除整个浏览器缓存来解决。现在我可以在HTTP协议上访问我的本地主机网站。


这些对我都没用。它开始发生在chrome更新(版本63.0.3239.84,linux)与一个本地URL。无论如何都会重定向到https。我在这上面浪费了很多时间和耐心

最终起作用的只是改变定义域。

不管怎样,域名是。app。也许是有什么事?只是把它改为。test和chrome停止重定向它


新发展!(如果你有Chrome 63+)

如果您的本地主机域是.dev,那么我认为之前接受的答案是行不通的。原因是因为自Chrome 63以来,Chrome将通过预加载的HSTS强制。dev域使用HTTPS。

这意味着,.dev基本上不能再工作了,除非您有适当的签名SSL证书——不允许有自签名证书!在这篇博客文章中了解更多。

因此,现在要修复这个问题,并避免这种情况在未来再次发生。test是一个推荐的域名,因为它是由IETF保留用于测试/开发目的。您还应该能够将.localhost用于本地开发。


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


另一种选择是使用类似https://github.com/rchampourlier/tunnelss的东西

当然,它增加了另一个依赖/设置,但它也允许在开发中测试https,这可能很好。

我使用RVM,然而,让隧道工作,我必须使用sudo宝石安装隧道和sudo隧道


进入Chrome的设置,然后进入高级设置,在隐私和安全部分单击清除浏览数据,然后清除所有数据。我遵循了这些步骤,它对我很有效。希望它能帮助到一些人。


Chrome 63强制。dev域通过预加载的HSTS自动转换为HTTPS。 快速修复:只需将.dev域更改为.localhost。


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

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

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


从https://galaxyinternet.us/google-chrome-redirects-localhost-to-https-fix/

没有一个选项修复工作为我,为修复https://localhost:3000,这做到了。

点击并按住重载按钮,选择空缓存和硬重载,这似乎只有在本地主机上的一个选项


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

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

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


这是目前最快的解决方案(17-3-2018):

关闭所有Chrome选项卡/窗口,并在命令行上运行以下内容:(或将其添加为短代码)

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors

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

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


在我的例子中,我把我的项目路径设置为/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


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


一个简单的解决方案是编辑/etc/hosts文件,并为每个项目建立一个别名。

127.0.0.1   project1 project2 project3

除非发送@bigjump提到的HSTS响应,并且如果在项目之间来回更改,还可以维护登录会话,否则这些无域名称永远不会有HSTS问题。


我如何用chrome 79解决这个问题:

只需粘贴这个url在你的搜索输入chrome://flags/#allow-insecure-localhost

它通过使用实验特性帮助了我。


打开Chrome开发人员工具->进入网络->选择“禁用缓存->重新加载”


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

总是退回到微软文档,以获得比谷歌更清楚的问题。


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

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

是这样的:

127.0.0.1    myproject.localhost
127.0.0.1    dev.project.localhost

chrome://net-internals/#hsts 

在“删除域安全策略”中输入localhost,按“删除”键。

现在转到

chrome://settings/clearBrowserData 

选中“缓存的图像和文件”复选框,然后按“清除数据”按钮。


对我来说,下面的操作在Chrome 90中是有效的。我的应用程序在localhost:3000上打开了一个本地webpack服务器,自动重定向到HTTPS,我得到了ERR_SSL_PROTOCOL_ERROR。

我点击URL旁边的小信息图标,从菜单下拉菜单打开网站设置。在列表中,“不安全”内容被设置为“阻止”(默认值)。

我把这个改为允许,只是重新加载http版本,它加载正常。

希望这能帮助到人们。


我找不到任何解决办法;而是重定向到我的网络。配置允许我继续工作(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>

以我为例,我在Mac电脑上使用浏览器同步,浏览器不断将http://localhost:3000重定向到https://localhost:3000。

我正在使用代客服务本地网站,我已经运行代客安全在本地*。因为我在浏览器同步中代理这个HTTPS域,所以浏览器正在用HTTPS加载localhost:3000。

为了解决这个问题,我不得不:

运行valet unsecure删除SSL证书 运行代客重启 重启browser-sync 在浏览器中打开localhost:3000(在我的情况下,Vivaldi是一个Chromium浏览器) 开放开发人员工具 勾选“网络”选项卡上的“禁用缓存” 刷新页面


结果这个错误消息把我送进了兔子洞。

对我来说,问题是我试图在http上加载的页面未能返回响应(由于我的代码中的一个错误导致服务器崩溃)。

Chrome自动尝试https自动作为备份,而不是看到实际的错误(页面超时),我看到SSL错误,这是一个红鲱鱼。

修复底层服务器崩溃&导航回http://localhost:5000修复了我的问题。


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

chrome://net-internals/#hsts 

在“删除域安全策略”下输入域,按“删除”键。


如果你碰巧在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上测试。