我偶尔会收到以下 421 错误:
错误的请求
客户端需要为此请求建立新连接,因为请求的主机名与用于此连接的服务器名称指示 (SNI) 不匹配。
但是,刷新浏览器会清除错误并且页面正常加载。下一次加载页面不会产生和错误,因此模式看起来很随机。我能看到的唯一模式是当我使用 header("Location: " . $url); 重定向页面时可能会发生这种情况。
我有 Comodo 的 PositiveSSL 多域证书。我的服务器是共享网络托管服务上的 Apache,所以我无权访问配置。
我从一个域加载页面,页面内是指向证书上第二个域的链接。
我读到的有关此错误的所有内容似乎都指向此问题与这是一个多域证书有关。
我想知道的是,网页 (php) 编码方面是否有任何可能导致此问题(并且可以修复)的内容,或者是否是配置错误或服务器错误,并且只有我的托管服务可以修理它。
到目前为止,我的托管服务无法提供任何内容,并要求在接下来发生的确切时间回电,以便他们进行研究。任何帮助将不胜感激,因为我并不过分相信他们可以解决这个问题。
更新 好吧,差不多几年后,决定是时候处理它了。通过删除提供图像和 javascript 的静态域,我能够解决大部分问题。但是,我仍在为某些内容使用第二个域,尤其是 Safari 仍然给我带来问题。
我做了更多的研究,并在这里找到了另一篇讨论它的文章。正是@Kevin 所描述的。文章证实它发生在 Safari 中。因此,根据建议,我着手为每个域获取单独的证书。我在共享主机 (Webhostinghub) 上,发现他们现在提供自动续订的免费 SSL (AutoSSL)。这听起来不错。他们为我设置了 5 个免费证书。到现在为止还挺好。我什至可能会尝试重新启用静态域进行测试。如果一切顺利,我将节省 $ 以启动作为奖励,并让我的 Comodo 证书在 7 月到期。
在浏览器的 url 栏中键入 localhost 时,它会正确重定向到https://localhost
,但是我的代码中用于加载文件的所有调用http
都不会被重定向或重写到https
. 例如:
<link rel="stylesheet" type="text/css" href="http://static/css/colwidth.min.css">
Run Code Online (Sandbox Code Playgroud)
我Redirect permanent / https://localhost/
在 Apache 配置文件VirtualHost
部分中尝试过RewriteRule
,我也尝试过.htaccess
Firefox
我得到的错误是:
阻止加载混合活动内容“
http://static/css/colwidth.min.css
”
我将不胜感激帮助了解如何与做既Apache的配置和.htaccess
(我知道.htaccess
是不是首选方法-但我还是想知道为什么它不工作)
网址:
<VirtualHost *:80>
ServerAdmin me@localhost
DocumentRoot "D:/Website/path/to/root"
ServerName localhost
Redirect permanent / https://localhost/
<Directory "D:/Website/path/to/root">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require ip 127.0.0.1
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin me@localhost
DocumentRoot "D:/Website/path/to/root"
ServerName …
Run Code Online (Sandbox Code Playgroud)