Апостроф (Smart Quote) в поиске выдает Apache 400 Bad Request - PullRequest
0 голосов
/ 05 октября 2010

У меня есть форма поиска в моем веб-приложении, которая выдает ошибку Apache 400 Bad Request при поиске с использованием апострофа (умная цитата, т.е. , а не ').Это происходит, когда кто-то копирует и вставляет из Microsoft Word (который автоматически преобразует метки в умные кавычки).

search box

Форма вызывает запрос GET, который помещает строку поиска в URL,Даже когда я кодирую строку, это вызывает эту ошибку.Что я должен сделать, чтобы заставить это работать?

<script type="text/javascript">

function zend_submit_main() {

    var query = $('#search_field').val();

    if(query != '') {
        var search_field = '/query/' + escape(query);
        var url = '/search/results' + search_field + '/active-tab/contacts';
        window.location = url;
    }

    return false;
}

</script>

<form id="search_form" method="GET" onsubmit="zend_submit_main(); return false;">
    <input type="text" value="search by contact name" onFocus="if (this.value=='search by contact name') { this.value=''; }" onBlur="if (this.value=='') { this.value='search by contact name'; }" name="search_field" id="search_field" style="width:160px;" />
    <input type="submit" value="Go" />
</form>     

1 Ответ

1 голос
/ 05 октября 2010

Используйте encodeURIComponent вместо escape:

var search_field = '/query/' + encodeURIComponent(query);

escape не является стандартной функцией и не кодирует значение в соответствии с Процентным кодированием, как указано в RFC 3986 . Например, кодируется как "%u2019.

...