Using protocol-relative URIs within “Location:” headers

爱⌒轻易说出口 提交于 2019-12-09 03:31:08

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!