在 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 应用程序之前使用反向代理对其进行编码
我有一个非常简单的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 应用程序之前使用反向代理对其进行编码