3

大多数(如果不是所有)浏览器都支持以下表示法:

<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
4

3 回答 3

2

以 开头的 URL//是相对 URL 的一个示例。

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

这在关于 HTTP/1.1 的 RFC2616 的第 14.30 节中指定:

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


编辑:但请考虑附加到这个答案的评论。我的回答可能应该通过“根据当前接受的发布标准”或其他东西来限定。我不是问现实中存在什么的人;)

于 2013-10-07T22:26:34.950 回答
1

不,那是无效的。它也没有那么大的意义:

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

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

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

于 2013-10-07T22:27:05.030 回答
-1

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

于 2013-10-08T06:21:43.677 回答