我在服务器端使用了asp.net Web API,该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();}提琴手要求:电话号码中带有+:http://localhost:56771/api/Account/%2B18888888888/ResetCode?lan=en-US这没有打我的api。无+的提琴手请求:http://localhost:56771/api/Account/18888888888/ResetCode?lan=en-US此网址会触发该服务。提琴手的要求与电子邮件:http://localhost:56771/api/Account/abc%40GMAIL.COM/ResetCode?lan=en-US此网址会触发该服务。可能是第一个url(上面列出的)无法访问该服务的原因。谢谢你的帮助。
1 回答
湖上湖
TA贡献2003条经验 获得超2个赞
可能是%2B在URL中接收到或将其理解为+,然后将其转换为空格。
您也可以尝试通过对%符号进行编码(一种称为双重编码)来防止这种情况。+然后成为%252B。让我知道是否有帮助。
更新,以使答案更完整(感谢JH):
您还需要确保中存在以下设置Web.Config。
<system.webserver>
<security>
<requestFiltering allowDoubleEscaping="true">
</security>
</system.webserver>
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消