5

Ich habe einige Probleme mit der Codierung der Anfrage je nach Browser.Angularjs Anfrage Codierung und schlechte Zeichen (in FF arbeiten gut)

Die folgenden Dumps zeigen Header, die sich zwischen FF und Chrome unterscheiden (ich habe alle gleichen Header entfernt). Siehe die Darstellung des "search" Wert:

Firefox: Ok

Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding: gzip, deflate 
Content-Type: application/json;charset=utf-8 

POST: {"data":{"size":10,"search":"José","order":"name","page":1}} 

Chrome: Nicht ok

Pragma: no-cache 
Cache-Control: no-cache 
Origin: http://localhost 
Content-Type: application/json;charset=UTF-8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: es-ES,es;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

POST: {"data":{"size":10,"search":"José","order":"name","page":1}} 

IE Arbeiten Sie nicht

Ich habe versucht, den Inhaltstyp in $ http zu zwingen, aber nichts G. Die Antworten in beiden Browsern funktionieren einwandfrei. Ich benutze Apache über Win 7 "por si las moscas".

Wichtig: Die Anfrage hat ein schlechtes Format, bevor sie an den Server gesendet werden, die obigen Header, die ich von Firebug und Chrome inspizieren nehme.

Irgendeine Idee? Vielen Dank!

José

UPDATE

I url kodieren auf die Post zu machen, und Decodierung in dem Server, merke ich, dass mit UTF-8 der URL dekodieren Arbeit schlecht, aber mit ISO-8859-1 funktioniert gut. Dann sendet der Browser die Post mit ISO-8859-1?

Antwort

0

Gemäß w3 spec ist der Zeichensatz ISO-8859-1 der Standardwert, wenn nichts angegeben ist oder kein Accept-Charset Header vorhanden ist. Es ist wahrscheinlich, dass die anderen Charsets alles vermasseln.

try undefining diesen Header:

$http({ 
    method: 'POST', 
    url: '/page.html', 
    headers: { 'Accept-Charset': undefined } 
}) 
.success(function(){ /*success fn here*/ });