如何防止 ASP.net 核心中的默认 url 解码
How to prevent default url decoding in ASP.net core
在我的控制器中,我有一个接受字符串的 HTTP get 方法
[HttpGet("{token}"]
public async Task<IActionResult> GetFoo(string token)
{
//Some actine
return Ok(object);
}
如果我发送下面编码的令牌 test%2Atest
,ASP .NET 默认会将此令牌解码为 test*test
。但是,如果我发送 test%2Ftest
,它不会将 %2F
解码为 /
。
我能理解为什么 ASP.NET 不这样做,因为它会破坏路线。
有没有办法禁用此默认行为,以便我可以在我的控制器中取消解码?
我这边有几个测试结果,但我觉得不是你想要的。
我想你是否可以使用这种parameter-receiving方法?
https://localhost:44393/api/hello?token=test%2FParam
[HttpGet]
public string Index(string token)
{
return token;
}
我找不到在 ASP.net 内核中禁用默认 URL 解码的方法。
正如上面 Tiny Wang 所建议的,我更改了应用程序以在 header 中发送令牌并解决了问题。
在我的控制器中,我有一个接受字符串的 HTTP get 方法
[HttpGet("{token}"]
public async Task<IActionResult> GetFoo(string token)
{
//Some actine
return Ok(object);
}
如果我发送下面编码的令牌 test%2Atest
,ASP .NET 默认会将此令牌解码为 test*test
。但是,如果我发送 test%2Ftest
,它不会将 %2F
解码为 /
。
我能理解为什么 ASP.NET 不这样做,因为它会破坏路线。
有没有办法禁用此默认行为,以便我可以在我的控制器中取消解码?
我这边有几个测试结果,但我觉得不是你想要的。
我想你是否可以使用这种parameter-receiving方法?
https://localhost:44393/api/hello?token=test%2FParam
[HttpGet]
public string Index(string token)
{
return token;
}
我找不到在 ASP.net 内核中禁用默认 URL 解码的方法。
正如上面 Tiny Wang 所建议的,我更改了应用程序以在 header 中发送令牌并解决了问题。