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

у меня есть веб-служба, которая готова выводить данные gzip / deflated. Я проверил, что служба будет отвечать raw 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?

1 ответов


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