在"Location:"标头中使用协议相对URI

Que*_*low 9 php http http-headers protocol-relative

我在PHP手册中注明了以下内容:

HTTP/1.1需要绝对URI作为»Location:包括方案,主机名和绝对路径的参数,但某些客户端接受相对URI.

为了方便用户优先选择HTTPS无处不在的连接,我想改变我的PHP脚本中的标题:

header("Location: http://www.example.com/");header("Location: //www.example.com/");

我已经测试了上面的代码在我的firefox浏览器上工作,但我不确定这是否是可行的事情.或者我是否应该从$_SERVER变量中提取协议并将其放入.

mar*_*rio 9

HTTPbis更新允许相对URI.虽然未特别提及,但这包括协议相对URL.

(最重要的是HTTP/1.1规范的更新,它记录了已建立的浏览器行为.)


Gui*_*sel 2

根据HTTP 协议的建议,您应该使用绝对 URI。您仍然可以通过使用$_SERVER['HTTPS']变量来检测协议,条件如下:

$协议=“http”。(!empty($_SERVER['HTTPS']) ? "s" : "");