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

Bar*_*tta 13 asp.net-web-api

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

Dar*_*ler 13

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

RFC 2616

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

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

HTTPbis