我发现WebAPI将不同的HTTP响应标头放在不同的位置,一个在Response.Headers中,另一个在Response.Content.Headers中。例如,etag位于Response.Headers中,而lastModified位于另一个中。这背后的原因是什么?
答案 0 :(得分:11)
这个问题有几个答案。一个是因为这是HTTP规范定义标题的方式。
RFC 2616
分离内容标题的另一个更实际的原因是,编写代码可以更轻松地将数据处理为HTTP有效负载并设置相关标头,而与请求/响应对象无关。
不幸的是,最近的HTTPbis规范对他们认为标题应该去的位置做了一些重组,现在LastModified和Allow被认为是响应字段,而不是内容字段。 这意味着System.Net.HttpHeaders中定义的标头将不再符合规范,这非常糟糕。这也意味着我们可能会将LastModified作为HttpContent标头和Etag作为响应标头。
HTTPbis