我收到相当不言自明的错误:
检测到来自客户端 (*) 的潜在危险 Request.Path 值。
问题出*在请求 URL 中:
*
https://stackoverflow.com/Search/test*/0/1/10/1
此 url 用于填充搜索页面,其中“test*”是搜索词,url 的其余部分与各种其他过滤器相关。
有没有一种简单的方法可以在 URL 中允许这些特殊字符?我试过修改web.config,无济于事。
web.config
我应该手动编码/解码特殊字符吗?或者是否有这样做的最佳实践,我想避免使用查询字符串。- 但它可能是一种选择。
该应用程序本身是一个c# asp.netwebforms 应用程序,它使用路由来生成上面的漂亮 URL。
c# asp.net
*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");