标头位置相对路径兼容性
Posted
技术标签:
【中文标题】标头位置相对路径兼容性【英文标题】:Header Location relative path compatibility 【发布时间】:2012-05-19 11:09:07 【问题描述】:这个相对位置 html 标头是否与所有平台的所有浏览器绝对兼容?有什么标准吗?
Location: some_script.php?la=2&po=2030
我的意思是,它是否总是重定向到当前目录的 some_script.php?
【问题讨论】:
因为它是 PHP,浏览器甚至不知道标题,它只是注意到它正在被重定向,因为 PHP 是在服务器上执行的。 @11684:客户端的浏览器绝对会收到一个 Location 标头。您认为它还会如何决定更改其位置? @11684 你错了。 PHP 在服务器上执行,是的。但是 PHP 将标头发送到浏览器(客户端),客户端可以随心所欲地使用它。 How widely supported are scheme-relative URIs in HTTP 301 redirects 的可能重复项 @DavidBélanger 我不知道,谢谢你让我学到一些东西! 【参考方案1】:标准是这样的:
header('Location: http://www.mywebsite.com/yourpage.php?id=32', TRUE, 302);
但要回答您的问题,是的,如果您没有在开头放置斜杠或完整的 URL,它将重定向到当前文件夹中的页面 X。
我建议您为您所做的每个网站都这样做。在您的主文件(您使用的主 php 文件,如 config 或其他)中,创建类似的内容:
define('URL', 'http://www.mywebsite.com/');
因此,当您创建重定向、链接或其他内容时,您可以这样做:
header('Location: '.URL.'yourpage.php?id=32', TRUE, 302);
编辑:2017 年 11 月。正如下面 @jordanbtucker 所指出的,HTTP 规范已在 2014 年 6 月更新(这篇文章来自 2012 年),以允许在 Location 标头中使用相对 URI。
【讨论】:
是的,我已经在使用 relative 变体,它对我有用,但我怀疑它不适用于所有用户。我可以添加 url 的一部分来获取绝对路径,但是它会给在本地机器上调试这个 sctipt 带来一些麻烦,因为在我们 some_script.php 上总是在domain.com/some_script.php 并且将 SERVER_HOST 添加到 url 不是问题,但是在子文件夹的本地机器脚本上... 好的。那我建议你看看tools.ietf.org/html/rfc2616#section-10.3.3。好方法、最好的方法以及它的工作方式是您需要提供完整的 URL。 @abrahab 我不明白为什么在本地机器子文件夹上有完整的 URL 是个问题? HTTP 规范已更新,允许 Location 标头的值使用相对 URI。 tools.ietf.org/html/rfc7231#section-7.1.2以上是关于标头位置相对路径兼容性的主要内容,如果未能解决你的问题,请参考以下文章