如果queryString可以包含字符'.'
?
http://localhost:80/api/petstore/address/filter=address.id=100
在我的记忆中,它无法请求正确的主机,因此我的旧代码会将'.'
替换为'^'
,
并在服务器中将'^'
替换为'.'
。编码无法解决问题,因为'.'
不会
编码
我只想仔细检查queryString是否可以包含字符'.'
,是否有更好的解决方案来解决此问题。
答案 0 :(得分:1)
是。 .
是一个安全的网址字符。
URL包含所使用的方案的名称(
<scheme>
) 用冒号然后是一个字符串(<scheme-specific-part>
) 解释取决于计划。方案名称由一系列字符组成。允许使用小写字母“a” - “z”,数字和字符加(“+”),句点(“。”)和连字符(“ - ”)。
你的查询字符串看起来不正确,因为你甚至没有?
address/?filter=address.id=100
表示filter
的值为address.id=100
。
address/?filter=address&id=100
表示filter
的值为address
,id
的值为100
。
提出自己的编码标准可能不是最好的主意。
如果这是针对路由而不是查询字符串,请参阅this SO question有关路由中的句点修复的信息。虽然.
是安全的,但它可能会导致ASP.NET路由出现问题。