大多数浏览器支持以下表示法:
<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
答案 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)