如何获取所有可能的媒体类型

时间:2013-12-16 23:23:39

标签: http http-headers media-type

拥有由网址https://example.com/resource标识的资源,接受image/svg+xmltext/html媒体类型(使用HTTP&#39的Accept标头)。

客户如何了解这些可能的媒体类型? 我们经常将Accept标头称为客户端和服务器之间的协商。但我真的不明白客户端如何向服务器提供所需的类型,以及服务器应该如何回答。

我认为服务器可能能够向客户端传授其允许的类型。

1 个答案:

答案 0 :(得分:0)

我认为这需要分开:

如果您是服务器并希望通知客户有关所请求资源的替代表示,您可以通过RFC 5988中所述的Link标头进行此操作。可能的响应可能如下所示:

HTTP/1.1 200 Ok
Content-Type: image/svg+xml
Link: <https://example.com/resource>; rel="alternate"; type="image/png"
Link: <https://example.com/resource>; rel="alternate"; type="image/jpeg"

如果客户端提取资源并想知道哪些替代表示可用,那么如果找不到Link标题,则可以采用这种方法:

  1. 获取资源并发送包含Accept的{​​{1}}标头,暗示客户端了解每种可以想象的媒体类型。
  2. 从响应中提取媒体类型,并将其添加到重量为*/*的Accept标头中,让服务器知道所服务的媒体类型是不可接受的。示例:

    q=0

  3. 使用在步骤2中创建的新接受标头发送对同一资源的新请求
  4. 如果您收到Accept: image/svg+xml;q=0, */*回复,则表示您已完成。如果不是:返回步骤2.
  5. 您现在应该知道服务器上给定资源的所有媒体类型。