Wordpress woocommerce 在 chrome 浏览器中重定向到 https

Wordpress woocomerce redirecting to https in chrome browser

带有 woocomerce 插件的 Wordpress(版本 < 2.3.12)在使用 chrome 浏览器版本 44 访问时重定向到 https。

初始请求将通过 http 完成,但响应中的资源(css、js、链接)将以 https 为前缀。

登录请求也将重定向 https。

调用 is_ssl() (wp-included/functions.php) returns 在 chrome.

中为真
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 向每个请求发送一个新请求 header HTTPS = 1,并且 woocomerce 版本 < 2.3.12 不正确 识别此 header 的存在以指示请求是通过 https 代理服务器提供的。

有问题的代码可以在/wp_content/woocommerce/woocommerce.php:

中找到
if ( ! isset( $_SERVER['HTTPS'] ) && ! empty( $_SERVER['HTTP_HTTPS'] ) )
    $_SERVER['HTTPS'] = $_SERVER['HTTP_HTTPS'];

要解决此问题,您可以注释掉这些行(通过 ftp 或直接在服务器上)。

或者,您可以将您的 woocomerce 插件升级到最新版本(这已在 v 2.3.12 中修复),或者 使用其他浏览器登录您的管理面板,或将 chrome 升级到最新版本。

这已在 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/

此问题已在上一个主题中提出并得到解答!

不要编辑插件核心,这个错误有很多解决方法。