在ASP.NET Core API 2.1中使用带有非ASCII字符的标头发送请求

问题描述 投票:1回答:1

我有一个非常简单的ASP.NET Core API。我正在将标头发送到此服务,并且效果很好。

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

我知道这对客户端来说不是问题,我在Java API上测试了相同的代码,并且可以正常工作。我也用邮递员复制了同样的问题。

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

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

Screenshot of Postman

编辑:

它与3.1一起使用,所以现在我们知道这与2.1有关。

c# asp.net-core asp.net-web-api character-encoding asp.net-core-2.1
1个回答
0
投票

这是.net core 2.1的局限性,并且已通过.net core 2.2修复。

此github问题Configure header parsing to allow non-compliant headers中有关于此行为的更多信息,>

我可以看到以下解决方案来解决此问题:

  • 迁移到.net core 2.2或更高版本
  • 来自客户端的网址编码标头
  • 使用反向代理在标题到达ASP.net应用程序之前对其进行编码
© www.soinside.com 2019 - 2024. All rights reserved.