Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using protocol-relative URIs within "Location:" headers

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.

like image 922
Question Overflow Avatar asked Sep 15 '12 10:09

Question Overflow


2 Answers

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.)

like image 131
mario Avatar answered Nov 20 '22 15:11

mario


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" : "");
like image 21
Guillaume Poussel Avatar answered Nov 20 '22 15:11

Guillaume Poussel