我们有一个 ASP.NET MVC 项目,它有一个 REST API,由使用 Backbone 的 Web 前端使用。其中一项功能是自由文本搜索,目前使用如下 URL:
http://server/Search/{search-query}/{page-number}/{page-count}
这指向一个像这样的搜索控制器(相应地映射了一个路由):
public JsonResult Search(string query, int page, int pageSize)
{
// Do search
}
它适用于带有单个单词的简单查询或没有复杂字符(例如test
, hello+world
)的简单查询,但似乎一些特殊字符(如*
,&
等)很容易打破这一点,并导致以下错误:
从客户端检测到潜在危险的 Request.Path 值
由于搜索查询是用户通过文本框输入的,因此需要更有弹性地处理包含无效字符的搜索查询。
我尝试使用 对搜索字符串进行编码encodeURIComponent
,但似乎并未对所有有问题的字符进行编码。
是否有允许通过 REST API 进行自由文本搜索的推荐方法?任何想法或建议将不胜感激。谢谢。