如何阻止 Chrome 重定向到 HTTPS?

Posted

技术标签:

【中文标题】如何阻止 Chrome 重定向到 HTTPS?【英文标题】:How to stop Chrome from redirecting to HTTPS? 【发布时间】:2018-05-23 23:16:21 【问题描述】:

几天前,Chrome 开始将我在 Wampserver 中的所有虚拟主机重定向到 https。直到几天前一切正常,然后有一天我登录到我的网站上工作,Chrome 说无法访问该网站,即使我使用了与过去相同的 URL。 Wamp 与 Apache 和 mysql 一样运行,并且这些服务在错误日志中都没有任何错误。

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

在 Chrome 中唯一可以通过 http://localhost/site 访问网站。我所有的 Apache vHost 都会重定向到 HTTPS。我用谷歌搜索和搜索,找不到任何能真正解决问题的东西。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

我认为问题是“如何阻止 Chrome 重定向到 HTTPS?”而不是“改用哪个 TLD?”... 我同意 Stretsh。答案确实解决了我的本地站点问题,但没有回答我关于重定向到 https 的问题。如果我启动一个没有 SSL 的网站怎么办?我将无法访问它。我会将我的本地站点更改为 .test,但在您为我的问题提供解决方案之前,我不会接受这个答案。 您所有的虚拟主机都以 .dev 结尾,并且无法再让它们在您的机器上运行。唯一的解决方案是更改 tld。 补充一点,.app 域(我用于本地开发)也归 Google 所有,并且做同样的事情。 我相信大多数专业开发人员在他们的本地环境中使用 .dev TLD(我的情况和成千上万的其他开发人员——我相信——使用它)。 .dev TLD 已在我们中间使用多年,现在它导致人们浪费时间,直到他们发现 .dev 不在 RFC2606 的保留示例二级域名中。我不得不转向 .devel 跳跃,因为 Google 不会购买它……感谢 @benedikt 将 RFC2606 链接用于讨论。顺便说一下,关于这个问题的一篇好文章:theregister.co.uk/2015/03/13/google_developer_gtld_domain_icann【参考方案2】:

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

typing "badidea" on the warning page,如果您在本地设置了 SSL(一起破解),这可能不起作用。它绕过了警告,但我的本地 SSL 设置不正确并显示另一个本地站点。 narayon 还建议了一个我没有尝试过的 chrome 论坛的链接。

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

【讨论】:

感谢您的参考。请注意,除了@benedikt 回答中提到的 RFC2606 备忘录中的 TLD 之外,没有面向未来的 TLD。【参考方案3】:

我找到了一种快速的解决方法,可以满足我的需求,并且可能对其他人有所帮助。

我在开发时使用Browser Sync,我只是将代理参数设置为“testsite.dev”,它会在 Chrome 中正确提供。

这是我正在使用的命令:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

127.0.0.1       testsite.localhost

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

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

附:确保先安装 mkcert

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

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

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

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

    127.0.0.1       testsite.dev
    127.0.0.1       www.testsite.dev
    打开您的 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>

    重启 Apache

    (额外)步骤 - 让您的操作系统和浏览器信任自签名证书,否则将无法正常工作

【讨论】:

以上是关于如何阻止 Chrome 重定向到 HTTPS?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止重定向的 URL 被屏蔽?

从 Chrome 自定义选项卡重定向到 Android 应用程序时“导航被阻止”

从 Chrome 自定义选项卡重定向到 Android 应用程序时“导航被阻止”

Linux 第三天 重定负管道符环境变量

如何防止 Chrome 将 AJAX 请求重定向到 HTTPS?

如何阻止localhost重定向到实时站点