当使用chrome浏览器44版访问时,带有woocomerce插件(版本<2.3.12)的Wordpress会重定向到https。
初始请求将通过http完成,但是响应中的资源(css,js,链接)将以https为前缀。
登录请求还将重定向https。
调用is_ssl()
(wp-included / functions.php)在chrome中返回true。
function is_ssl() {
if ( isset($_SERVER['HTTPS']) ) {
if ( 'on' == strtolower($_SERVER['HTTPS']) )
return true;
if ( '1' == $_SERVER['HTTPS'] )
return true;
} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
return true;
}
return false;
}
但在所有其他经过测试的浏览器中为假
这是由于Chrome v44会HTTPS = 1
为每个请求发送一个新的请求标头,而woocomerce版本<2.3.12错误地识别了此标头的存在,以指示该请求是通过https代理服务器提供的。
有问题的代码可以在以下位置找到/wp_content/woocommerce/woocommerce.php
:
if ( ! isset( $_SERVER['HTTPS'] ) && ! empty( $_SERVER['HTTP_HTTPS'] ) )
$_SERVER['HTTPS'] = $_SERVER['HTTP_HTTPS'];
要解决此问题,您可以注释掉这些行(通过ftp或直接在服务器上)。
另外,您可以通过使用外部浏览器登录到管理面板或将chrome升级到最新版本,从而将woocomerce插件升级到最新版本(已在2.3.12版中修复)。
此问题已在chrome https://code.google.com/p/chromium/issues/detail?id=505268中修复,并且大多数用户都可以快速更新,因此这不太可能是长期问题,但足以使我感到困惑头痛,我认为值得在这里提出
非常感谢https://ma.ttias.be/chrome-44-sending-https-header-by-mistake-breaking-web-applications-everywhere/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句