是否可以使用 ASP.NET WebApi 为 HEAD 响应设置 Allow 标头?
Posted
技术标签:
【中文标题】是否可以使用 ASP.NET WebApi 为 HEAD 响应设置 Allow 标头?【英文标题】:Is it possible to set the Allow header for a HEAD response using ASP.NET WebApi? 【发布时间】:2015-05-05 21:39:58 【问题描述】:我正在构建一个 REST API 并尝试在 HEAD 请求进入时为特定路由返回 405 Method Not Allowed。
rules 表示“响应必须包含 Allow 标头,其中包含所请求资源的有效方法列表。”
但是,rules 也表示“服务器不得在响应中返回消息正文。”
所以我正在使用其Content
属性null 构造我的HttpResponseMessage
,但我可以提供“允许”标题的唯一方法是作为内容标题。如果我尝试将其作为 HttpResponseMessage
对象而不是 HttpContent
对象的标头提供,则会出现错误:
错误的标题名称。确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。
那么是否有可能遵守规范,或者它是那些“抓住鼻子和船”的情况之一?
【问题讨论】:
请显示用于创建响应的确切代码。顺便说一句,第二条规则是指对 HEAD 请求的常规回答。但是,如果不允许 HEAD 请求,则返回的不是常规响应,而是另一种响应 (405)。所以“无内容正文”的规则不适用于 405 响应。它仅适用于对 HEAD 的定期回复。问题出在其他地方。 【参考方案1】:尝试发送带有您的标头和零长度字节数组的ByteArrayContent
。
【讨论】:
以上是关于是否可以使用 ASP.NET WebApi 为 HEAD 响应设置 Allow 标头?的主要内容,如果未能解决你的问题,请参考以下文章
使用 ASP.NET 核心 MVC/Razor 站点和 WebAPI 进行授权
将 Http/2 与 ASP.NET 自托管 webapi 一起使用