Ich habe einen Webservice, der bereit ist, gzip/deflated Daten auszugeben. Ich habe überprüft, dass der Dienst mit rohem JSON oder mit gzip'd JSON mit wget und curl antwortet.Ist es möglich, jQuery zu zwingen, AJAX-Aufrufe für URLs mit aktiviertem gzip/deflate vorzunehmen?
Ich möchte diesen Web-Service mit dem jQuery AJAX-Aufruf verbrauchen.
Standardmäßig enthält der von jQuery bereitgestellte $ .ajax-Aufruf nicht den HTTP-Anforderungsheader "Accept-Encoding: gzip", der für den Webserver erforderlich ist, um mit gezippten Daten zu antworten.
Allerdings, wenn ich jQuery eigene Methoden verwenden, um die Header hinzufügen, zum Beispiel:
$.ajax({url: 'http://foo.com/service.json',
beforeSend: function(xhr) {
console.log('xhr set');
xhr.setRequestHeader('Accept-Encoding', 'deflate')
}
});
dann erscheint der folgende Fehler in der Browser-Konsole:
Refused to set unsafe header "Accept-Encoding"
Ist es möglich, jQuery zu zwingen, Machen Sie AJAX Aufrufe für URLs mit gzip/deflate aktiviert?
Wenn nicht, ist das ein Mangel in jQuery oder etwas grundlegender mit AJAX?
Ich denke der Browser entscheidet, ob er gzip/deflate akzeptiert oder nicht. "Faking" könnte zu Datenkorruption führen. – jwueller