是否有标题(“位置:/?param = abc”);包含有效参数并与所有浏览器兼容?
Posted
技术标签:
【中文标题】是否有标题(“位置:/?param = abc”);包含有效参数并与所有浏览器兼容?【英文标题】:Does a header("location: /?param=abc"); contain a valid parameter and is compatible with all browsers? 【发布时间】:2012-02-06 16:45:39 【问题描述】:header("location: /?param=abc");
是否包含有效参数并与所有浏览器兼容?
或者,文件的 url 是必须的,所以它应该包含文件的路径:
header("location: /index.php?param=abc");
【问题讨论】:
问题不在于文件(这无关紧要),问题在于它缺少协议和主机,正如 hakre 指出的那样。因此,您的两种选择都同样无效(尽管两者都可能在大多数浏览器中工作)。 谢谢。那么标头 ("location: http://".$_SERVER['HTTP_HOST']."/?param=abc") 是否正确? (它在路径中不包含index.php,但它实际上会加载它)...我不希望index.php显示在地址栏中... 不,不是。 URL 必须以http://
、https://
之类的开头...不要被某些浏览器对用户隐藏的事实感到困惑,它仍然需要存在。
对不起,我在大约 6 分钟前在我的评论中添加了 http://。那么,header ("location: http://".$_SERVER['HTTP_HOST']."/?param=abc") 是否正确呢? (URL 中没有 .php 文件)
是的,当然,忘记“文件”。 URL 不关心物理文件。
【参考方案1】:
不,它与所有 HTTP 客户端都不兼容,因为 HTTP 需要 Location
标头的有效 URI(绝对的,而不是相对的)。
有关规范要求,请参阅RFC 2616 14.30 Location。
【讨论】:
HTTP 的下一个修订版将放宽该要求(请参阅trac.tools.ietf.org/wg/httpbis/trac/ticket/185)。在实践中使用这些没有问题。 @JulianReschke:好吧,我并没有说它不起作用,但是如果您针对所有 HTTP 客户端,则应该遵循规范。您提到的规格尚未发布。 hakre - 修订后的规范反映了实践中所做的事情。告诉人们不要使用它是没有意义的。 @Julian Reschke:我们只能针对规范进行测试,这并非毫无意义。我实际上帮助重新发明了***。此外,您所写的实践也改变了 baseURI 和 relativeURI 如何随着时间的推移相互解析。出于互操作性的原因,我认为使用 absoluteURI 并不是一个坏主意。 hakre:我并不是说检查规格毫无意义。当您知道某个特定部分将在几个月后的修订版中发生更改时,坚持检查超过 10 年的规范是没有意义的。【参考方案2】:根据 RFC 2616,该字段值无效,但根据将于今年发布的 RFC 2616 修订版有效。
是的,客户会处理它。
【讨论】:
以上是关于是否有标题(“位置:/?param = abc”);包含有效参数并与所有浏览器兼容?的主要内容,如果未能解决你的问题,请参考以下文章
是否有可能知道星星是否亮起? (jQuery Raty 插件)