我在PHP manual中注明了以下内容:
HTTP / 1.1需要绝对URI作为»Location:includes的参数 方案,主机名和绝对路径,但有些客户接受 相对URI。
为了方便用户优先选择HTTPS everywhere,我想改变PHP脚本中的标题:
header("Location: http://www.example.com/");
至header("Location: //www.example.com/");
我已经测试了上面的代码在我的firefox浏览器上工作,但我不确定这是否是可行的事情。或者我是否应该从$_SERVER
变量中提取协议并将其放入。
答案 0 :(得分:9)
HTTPbis update允许相对URI。虽然没有特别提及,但这包括协议相对URL。
(最重要的是HTTP / 1.1规范的更新,记录了已建立的浏览器行为。)
答案 1 :(得分:2)
根据HTTP protocol的建议,您应该使用绝对URI 。
您仍然可以使用$_SERVER['HTTPS']
变量检测协议,条件如下:
$protocol = "http" . (!empty($_SERVER['HTTPS']) ? "s" : "");