Backbone を使用する Web フロントエンドによって使用される REST API を持つ ASP.NET MVC プロジェクトがあります。機能の 1 つにフリー テキスト検索があり、現在は次のような 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 を介してフリー テキスト検索を許可する推奨される方法はありますか? ご意見やアドバイスをいただければ幸いです。ありがとう。