一尘不染

从客户端(*)检测到潜在危险的Request.Path值

c#

我收到了相当容易解释的错误:

从客户端(*)检测到潜在的危险Request.Path值。

该问题是由于*请求网址中的原因:

https://stackoverflow.com/Search/test*/0/1/10/1

该URL用于填充搜索页面,其中“ test *”是搜索词,其余URL与各种其他过滤器有关。

有没有一种简单的方法可以在URL中允许这些特殊字符?我尝试修改web.config,但无济于事。

我应该手动编码/解码特殊字符吗?还是有这样做的最佳实践,我想避免使用查询字符串。-但可能是一个选择。

该应用程序本身是一个c# asp.netWebforms应用程序,它使用路由生成上面的漂亮URL。


阅读 730

收藏
2020-05-19

共1个答案

一尘不染

*URL的路径中不允许使用该字符,但是在查询字符串中使用该字符没有问题:

http://localhost:3286/Search/?q=test*

这不是编码问题,*URL中的字符没有特殊含义,因此无论您是否对URL进行编码都无关紧要。您将需要使用其他方案对其进行编码,然后对其进行解码。

例如,使用任意字符作为转义字符:

query = query.Replace("x", "xxx").Replace("y", "xxy").Replace("*", "xyy");

并解码:

query = query.Replace("xyy", "*").Replace("xxy", "y").Replace("xxx", "x");
2020-05-19