问题
I note in the PHP manual which states the following:
HTTP/1.1 requires an absolute URI as argument to » Location: including the scheme, hostname and absolute path, but some clients accept relative URIs.
To facilitate users with preference for a HTTPS everywhere connection, I am thinking of changing the headers in my PHP scripts from:
header("Location: http://www.example.com/");
to header("Location: //www.example.com/");
I have tested the above code to be working on my firefox browser, but I am not sure whether it is an advisable thing to do. Or whether I should extract the protocol from $_SERVER
variable and put it in.
回答1:
The HTTPbis update allows relative URIs. While not specifically mentioned, this includes protocol-relative URLs.
(It's foremost an update to the HTTP/1.1 spec that documents established browser behaviour.)
回答2:
As suggested by HTTP protocol, you should use absolute URI.
You can still detect protocol, by using $_SERVER['HTTPS']
variable, with a condition like:
$protocol = "http" . (!empty($_SERVER['HTTPS']) ? "s" : "");
来源:https://stackoverflow.com/questions/12436669/using-protocol-relative-uris-within-location-headers