gpt4 book ai didi

javascript - Web api路由不起作用

转载 作者:行者123 更新时间:2023-11-29 20:54:21 24 4
gpt4 key购买 nike

我的服务器端有以下 asp.net web api,它应该将电话号码或电子邮件地址作为用户登录名。它可以很好地处理电子邮件地址和电话号码,而无需在其前面加上“+”。当电话号码有 + 这个 api 永远不会被击中。

类级路由前缀:[RoutePrefix("api/Account")]

[HttpPost]
[HttpOptions]
[Route("{UserName}/ResetCode")]
public IHttpActionResult ResetCode([FromUri]string userName, [FromUri]string lan = null)
{
service.ResetCode(userName, language);
return Ok();
}

fiddler 请求:在电话号码中加上 +:

http://localhost:56771/api/Account/%2B18888888888/ResetCode?lan=en-US

这没有命中我的 api。

没有 + 的 Fiddler 请求:

http://localhost:56771/api/Account/18888888888/ResetCode?lan=en-US

此Url打服务

带有电子邮件的 Fiddler 请求:

http://localhost:56771/api/Account/abc%40GMAIL.COM/ResetCode?lan=en-US

此Url打服务

第一个 url(上面列出的)无法访问服务的原因可能是什么。

感谢您的帮助。

最佳答案

可能是 URL 中的 %2B 被接收或理解为 +,然后转换为空格。

您可以尝试通过对 % 符号进行编码来防止这种情况,这种做法称为双重编码。 + 然后变成 %252B。如果这有帮助,请告诉我。

更新,使答案更完整(感谢 J.H.):

您还需要确保 Web.Config 中存在以下设置。

<system.webserver>
<security>
<requestFiltering allowDoubleEscaping="true">
</security>
</system.webserver>

有关这方面的更多信息,请参见例如this answer

关于javascript - Web api路由不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50107394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com