5

Mam pewne problemy z kodowaniem żądania w zależności od przeglądarki.Kodowanie żądania Angularjs i złe znaki (w FF działa dobrze)

Poniższe zrzuty pokazują nagłówki, które różnią się między FF a Chrome (usunąłem wszystkie równe nagłówki). Zobacz reprezentację "Szukaj" wartość:

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: nie 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 nie działa

Próbowałem wymusić Content-Type na $ http, ale nic sol. Odpowiedzi w obu przeglądarkach działają poprawnie. Używam Apache nad Win 7 "por si las moscas".

Ważne: Żądanie ma zły format przed wysłaniem na serwer, powyższe nagłówki mogę pobrać z Firebug i sprawdzić w Chrome.

Każdy pomysł? Dzięki!

José

UPDATE

robię url kodowanie do słupka i dekodowania na serwerze, zauważam, że z UTF-8 Prace url dekodowania złe, ale z ISO-8859-1 dobrze pracować. Następnie przeglądarka wysyła post z ISO-8859-1?

Odpowiedz

0

Według w3 spec, charset ISO-8859-1 jest domyślny, gdy nic nie jest określona lub nie Accept-Charset nagłówek jest obecny. Prawdopodobnie inne znaki ładują się.

try undefining tego nagłówka:

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