WordPress with woocomerce plugin (version < 2.3.12) redirects to https when accessed with chrome browser version 44.
The initial request will complete over http, but the resources in the response (css, js, links) will be prefixed by https.
Requests to login will also redirect the https.
A call to is_ssl()
(wp-included/functions.php) returns true in 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;
}
But false in all other tested browsers
This is due to combination of Chrome v44 sending a new request header
HTTPS = 1
with every request, and woocomerce version < 2.3.12 incorrectlyidentifying the presence of this header to indicate that the request is being served via an https proxy server.
The code in question can be found in
/wp_content/woocommerce/woocommerce.php
:To fix the problem, you can comment out these lines (via ftp or on the server directly).
Alternativy, you can upgrade your woocomerce plugin to the latest version (this was fixed in v 2.3.12), either
by using anouther browser to log in to your admin panel, or by upgrading chrome to the latest version.
This was fixed in chrome https://code.google.com/p/chromium/issues/detail?id=505268 and most users are quick to update,
so this is not likely to be a long term problem, but caused me enough headaches i thought it worth bringing up here
Many thanks to https://ma.ttias.be/chrome-44-sending-https-header-by-mistake-breaking-web-applications-everywhere/