两个Web API标头之间的区别response.Content.Headers和response.Headers

时间:2014-04-22 01:53:24

标签: asp.net-web-api

我发现WebAPI将不同的HTTP响应标头放在不同的位置,一个在Response.Headers中,另一个在Response.Content.Headers中。例如,etag位于Response.Headers中,而lastModified位于另一个中。这背后的原因是什么?

1 个答案:

答案 0 :(得分:11)

这个问题有几个答案。一个是因为这是HTTP规范定义标题的方式。

RFC 2616

分离内容标题的另一个更实际的原因是,编写代码可以更轻松地将数据处理为HTTP有效负载并设置相关标头,而与请求/响应对象无关。

不幸的是,最近的HTTPbis规范对他们认为标题应该去的位置做了一些重组,现在LastModified和Allow被认为是响应字段,而不是内容字段。 这意味着System.Net.HttpHeaders中定义的标头将不再符合规范,这非常糟糕。这也意味着我们可能会将LastModified作为HttpContent标头和Etag作为响应标头。

HTTPbis

  • 内容相关标头已定义为here
  • 请求标头here
  • 回复标题here