Подтвердить что ты не робот

Можно ли заставить jQuery делать вызовы AJAX для URL-адресов с включенным gzip/deflate?

У меня есть веб-служба, которая готова выводить данные gzip/deflated. Я проверил, что служба ответит сырой JSON или с помощью gzip'd JSON, используя wget и curl.

Я хочу использовать этот веб-сервис, используя вызов jQuery AJAX.

По умолчанию вызов $.ajax, который предоставляет jQuery, не добавляет заголовок HTTP-запроса "Accept-Encoding: gzip", который необходим веб-серверу для ответа с данными gzipped.

Однако, когда я использую собственные методы jQuery для добавления заголовка, например:

$.ajax({url: 'http://foo.com/service.json',
        beforeSend: function(xhr) { 
            console.log('xhr set'); 
            xhr.setRequestHeader('Accept-Encoding', 'deflate') 
       } 
});

то в консоли браузера появится следующая ошибка:

Refused to set unsafe header "Accept-Encoding"

Можно ли заставить jQuery делать вызовы AJAX для URL-адресов с включенным gzip/deflate?

Если нет, это недостаток в jQuery или что-то более фундаментальное с AJAX?

4b9b3361

Ответ 1

Браузеры автоматически добавляют заголовок принимающего кодирования, в том числе и по запросам XHR. Вам не нужно делать это на уровне DOM/JS.