Location头是否接受//协议表示法?

时间:2013-10-07 22:22:54

标签: http

大多数浏览器支持以下表示法:

<script src="//domain.com/script.js">

//符号表示使用与当前协议相同的协议,即:

  • http://domain.com/script.js如果当前页面已通过HTTP提供
  • https://domain.com/script.js如果当前页面已通过HTTPS提供

此表示法也适用于其他HTML标记:<a><link>等。

此表示法是否也适用于Location标题?

例如,回复此信息是否有效:

HTTP/1.0 301 Moved Permanently
Location: //domain.com/other-resource

3 个答案:

答案 0 :(得分:2)

//开头的网址是相对网址的示例。

Location-header需要一个绝对URL,这意味着您正在寻找的答案不幸的是:不,它不受支持。

这在Section 14.30 of RFC2616 on HTTP/1.1中指定:

  

字段值由单个绝对URI组成。


编辑:但请考虑此答案附带的评论。我的答案应该可以通过“根据目前公认的已发布标准”或其他方式进行限定。我不是要问现实中存在的东西;)

答案 1 :(得分:1)

不,这是无效的。它也没有真正有意义:

  

Location response-header字段用于将收件人重定向到Request-URI以外的位置,以完成请求或标识新资源。对于201(已创建)响应,Location是请求创建的新资源的位置。对于3xx响应,位置应该应该指示服务器自动重定向到资源的首选URI。字段值由单个绝对URI组成。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30

如果你知道有一个安全的URL可用,为什么当前页面使用什么协议呢?

答案 2 :(得分:-1)

根据RFC 2616无效,但它在实践中有效,并且在当前的HTTP / 1.1版本中有效(请参阅http://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7231.html#rfc.section.7.1.2

相关问题