是否可以使用 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 WebApi 2.2 添加身份验证

使用 ASP.NET 核心 MVC/Razor 站点和 WebAPI 进行授权

将 Http/2 与 ASP.NET 自托管 webapi 一起使用

ASP.net MVC 4 WebApi 中的嵌套资源

如何从 Java ME 应用程序使用 ASP.NET Web API

带有 ASP.NET Core WebAPI 的 Dart 中的令牌刷新并发问题