如何阻止 Chrome 重定向到 HTTPS?

How to stop Chrome from redirecting to HTTPS?

几天前,Chrome 开始将我在 Wampserver 中的所有 vHost 重定向到 https。几天前一切正常,然后有一天我登录到我的网站上工作,Chrome 说无法访问该网站,即使我一直使用相同的 URL过去做过。 Wamp 是 运行 以及 Apache,并且 MySQL 和 none 这些服务在错误日志中有任何错误。

我已经尝试使用 chrome://net-internals/#hsts 删除域(我为我的本地站点使用了伪造的 .dev 扩展名),但这没有做任何事情。我还尝试安装 SSL 以查看 Chrome 是否会将其检测为安全连接……什么都没有。我什至尝试完全重新安装 Wamp(即使 vHosts 在其他浏览器中工作正常)并且没有任何改变。

在 Chrome 中唯一有效的是通过 http://localhost/site 访问网站。我的所有 Apache vHost 都重定向到 HTTPS。我用谷歌搜索了又搜索,但找不到真正解决问题的方法。

Chrome v63 强制 .dev 域为 HTTPS。互联网工程任务组 RFC2606 指定了哪些顶级域应该用于本地开发,而 .dev 不在该列表中。

Google 拥有 .dev 顶级域,并通过预加载的 HSTS 自动将所有 .dev 域名重定向到站点的 HTTPs 版本。

由于 .dev 是官方通用顶级域 (gTLD),我们最好将本地开发后缀从 .dev 更改为其他内容,即使还有其他解决方案(例如带有自签名证书的 https) ).所以你应该使用 .test, .example, .invalid.localhost 作为您的本地开发 TLD。

我无法改进@benedikt 的答案,因为它是正确的。有很好的临时修复:

  • ,如果您在本地设置(一起破解)SSL,这可能不起作用。它绕过警告,但我的本地 SSL 设置不正确并显示另一个本地站点。
  • narayon 还向 chrome 论坛推荐了一个 link,我还没有尝试过。

我的解决方法是将我所有的“.dev”开发 TLD 更新为“.d3v” 仍然足够短,可以快速键入、描述性强,并且可能面向未来。

我找到了一个快速的变通方法,可以满足我的需要,并且可以帮助其他人。

我在开发时使用 Browser Sync,我只是将代理参数设置为 "testsite.dev",它将在 Chrome.

中正确服务

这是我正在使用的命令:

browser-sync start --proxy "testsite.dev" --port "3000" --files "./**/*.*"

我也使用 .dev 扩展名,将来会更改为其他域,但对于我现有的 .dev 站点,当出现隐私错误时,单击屏幕上的任意位置并键入 'badidea' 和chrome 会将您重定向到该站点。有用!

解决方案 1 - 选择保留且面向未来的 gLTD,例如 .localhost 或 .test

编辑您的主机文件(Windows 是 C:\Windows\System32\Drivers\etc\hosts)

127.0.0.1       testsite.localhost

解决方案 2 - 为 .dev 安装自签名证书

  1. 创建证书。以管理员身份打开 Powershell 并 运行:

P.S. Make sure to install mkcert first

C:\Users\John> mkcert *.testsite.dev

这将创建适用于所有 .testsite.dev 站点的通配符证书

  1. 将这些密钥从C:\Users\John复制到C:\xampp\apache\crt\testsite_dev(crt文件夹不存在则创建)

  2. 在您的 C:\Windows\System32\Drivers\etc\hosts 文件中添加条目

    127.0.0.1       testsite.dev
    127.0.0.1       www.testsite.dev
  1. 打开你的 C:\xampp\apache\conf\extra\httpd-vhosts.conf 并添加一个条目
    <VirtualHost *:443>
       DocumentRoot "C:/xampp/htdocs"
       ServerName testsite.dev
       ServerAlias www.testsite.dev

       Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

       SSLEngine on
       SSLCertificateFile "crt/testsite_dev/_wildcard.testsite.dev.pem"
       SSLCertificateKeyFile "crt/testsite_dev/_wildcard.testsite.dev-key.pem"
    </VirtualHost>
  1. 重新启动 Apache

  2. (额外)步骤 - 让您的 OS 和浏览器信任自签名证书,否则它将无法工作