在 ASP.NET 核心 API 2.1 中发送一个带有 header 和 non-ASCII 个字符的请求

Sending a request in ASP.NET Core API 2.1 with a header with non-ASCII characters

我有一个非常简单的ASP.NET核心API。我正在向此服务发送 headers,它运行良好。

但问题是,当我在请求 header 中发送诸如“á”之类的字符时,请求失败 400: Bad request

我知道这不是客户端的问题——我针对 Java API 测试了相同的代码并且它有效。我也用 Postman 重现了同样的问题。

如何告诉服务器在请求 headers 中接受 UTF-8?

[HttpPut("/api/Test")]
public IActionResult test([FromHeader(Name = "Word")] String word)
{
  return Ok("I accepted your request");
}

编辑:

它适用于 3.1,所以现在我们知道这是 2.1 相关的。

这是 .net core 2.1 的限制,已在 .net core 2.2 中修复。

在这个 github 问题 Configure header parsing to allow non-compliant headers

中有关于此行为的更多信息

我可以看到以下解决此问题的方法:

  • 迁移到 .net core 2.2 或更高版本
  • Url 从客户端编码 header
  • 在 header 到达您的 ASP.net 应用程序之前使用反向代理对其进行编码