如果queryString可以包含'。'

时间:2014-02-20 03:11:04

标签: asp.net web

如果queryString可以包含字符'.'

For example:

http://localhost:80/api/petstore/address/filter=address.id=100

在我的记忆中,它无法请求正确的主机,因此我的旧代码会将'.'替换为'^', 并在服务器中将'^'替换为'.'。编码无法解决问题,因为'.'不会 编码

我只想仔细检查queryString是否可以包含字符'.',是否有更好的解决方案来解决此问题。

1 个答案:

答案 0 :(得分:1)

是。 .是一个安全的网址字符。

  

URL包含所使用的方案的名称(<scheme>)   用冒号然后是一个字符串(<scheme-specific-part>)   解释取决于计划。

     

方案名称由一系列字符组成。允许使用小写字母“a” - “z”,数字和字符加(“+”),句点(“。”)和连字符(“ - ”)。

sourcepercent encoding

你的查询字符串看起来不正确,因为你甚至没有?

address/?filter=address.id=100表示filter的值为address.id=100

address/?filter=address&id=100表示filter的值为addressid的值为100

提出自己的编码标准可能不是最好的主意。

如果这是针对路由而不是查询字符串,请参阅this SO question有关路由中的句点修复的信息。虽然.是安全的,但它可能会导致ASP.NET路由出现问题。