42

对我的问题的评论感到困惑/受到启发搜索引擎是否尊重 HTTP 标头字段“Content-Location”?,我想知道,Content-LocationHTTP 中的 header 字段的确切用途是什么以及如何使用它。

4

4 回答 4

18

作为对 GET 请求的响应,当请求的资源具有多种可用的表示形式(例如多种语言)时,可以使用 HTTP 中的 Content-Location。返回的资源的选择将取决于原始 GET 请求中的 Accept 标头。

通常,Content-Location 标头中指定的位置与原始请求的 URI 中指定的位置不同。

响应 PUT 或 POST 请求,

于 2009-01-15T20:25:53.947 回答
13

Content-Location HTTP 标头应该声明用于响应 HTTP GET 的资源的唯一位置(例如 request was GET /frontpage HTTP/1.1,服务器可以添加 HTTP 标头通知用户代理,如果以后需要此特定响应,则提供位置应该使用,因为原始位置可能取决于各种事物,然后应通过“ ”标题进行解释)。Content-Location: http://domain.com/frontpage.english.msie-optimizedVary

但是,请注意 HTTP Content-Location 标头在实际使用中存在问题,因为不同的浏览器(用户代理)处理它的方式不同: http: //mail.python.org/pipermail/web-sig/2004-October/000985.html

这是因为 RFC 2616 第 14.14 节说“Content-Location 的值还定义了实体的基本 URI”。简而言之,一个兼容的用户代理将使用 Content-Location 标头计算获取的文档的 BASE URL,如果获取的文档没有定义 BASE url 并且实际获取的 URL 和 Content-Location 差异足够大,这可能会导致使用不同的相对 URL (URL 的“目录”/“路径”部分不同)。

此外,我还没有看到使用 HTTP Content-Location 的任何优势(我曾经希望这可以用于提示永久书签位置,以防当前查看的 URL 不稳定,例如 domain.com/news/latest 但情况似乎并非如此)。

我目前的建议是忘记 HTTP 的 Content-Location,但您可以将它用于 MIME 电子邮件。

于 2011-06-27T10:07:23.260 回答
9

RFC 2616 的第 14.14 节规定:

当该实体可从与请求资源的 URI 不同的位置访问时,可以使用 Content-Location 实体头字段为消息中包含的实体提供资源位置...

这在AtomPub (RFC 5023, Section 9.2)中使用:

如果创建请求包含一个 Atom 条目文档,并且来自服务器的后续响应包含一个与 Location 标头逐字符匹配的 Content-Location 标头,则客户端有权将响应实体解释为以下内容的完整表示新创建的条目。如果没有匹配的 Content-Location 标头,客户端不得假定返回的实体是已创建资源的完整表示。

于 2009-02-02T09:20:57.047 回答
1

如果您有兴趣,请查看 RFC2557: http: //www.faqs.org/rfcs/rfc2557.html以获得更深入的解释。我目前正在为一堂课写这篇文章。它有点旧,但仍然相关。

于 2011-02-27T00:41:42.830 回答