Canonical vs Requested Type in Content Negotiation

时间:2009-08-24 07:37:53

标签: http content-type mime-types content-negotiation

所以我想知道对于返回数据可能有多种有效MIME类型的请求,应该如何处理HTTP内容协商。

例如,如果说我有一些具有以下可能的MIME类型的任意数据:

text/data,application/x-data,application/data+xml

鉴于可能存在多种MIME类型,从我的Web应用程序请求此表单数据的客户端应用程序应合理地期望接收该类数据,而不管它们在其请求Accept头中使用哪种MIME类型。但是对于这种数据的规范类型通常会有一些共识(即,一个是IETF的正确注册MIME类型,而其他类型是预注册或预标准化类型)。

所以我的问题是,我应该在回复这些请求时将我返回的Content-Type标头设置为规范类型还是请求的类型?哪种更好的做法?

我是否应该始终返回规范类型,还是应该回显请求的类型以确保与尚未更新的旧/写得不好的应用程序兼容?目前我正在返回规范类型,因为这似乎是一种更好的方法,以及大多数人正在使用的数据类型。

这有点主观,所以如果你认为它应该是社区维基而不是问题让我知道,我会考虑改变它

1 个答案:

答案 0 :(得分:0)

当用户代理(客户端应用程序)请求资源时,他们将为该单个请求的资源标记出几种不同的mime类型。出于兼容性原因,这种情况会让Web服务器知道用户代理能够接受的内容。服务器的工作是确定资源的mime类型实际上是什么。

在服务器端做出一些决定以找到适当的响应并没有什么坏处。例如,如果您希望将所有HTML页面作为XML提供服务,但主要用户代理不支持必要的mime类型,则可以使用辅助技术(如PHP或ASP)提供动态响应。在这个例子的情况下,最好的想法是将正确的mime类型设置为规范,如果用户代理不支持规范,那么为他们提供他们将支持的其他东西,否则每个人都获得规范。