5

Ho qualche problema con la codifica della richiesta a seconda del browser.Angularjs richiede codifica e caratteri non validi (in FF funzionano bene)

I seguenti dump mostrano intestazioni che differiscono tra FF e Chrome (ho rimosso tutte le intestazioni uguali). Vedere la rappresentazione del valore di "cerca":

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: Non 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 non funzionano

Ho provato a forzare il Content-Type in $ http, ma niente g. Le risposte in entrambi i browser funzionano bene. Sto usando Apache su Win 7 "por si las moscas".

Importante: la richiesta ha un formato non valido prima di essere inviata al server, le intestazioni di cui sopra che prendo da Firebug e Chrome ispezionano.

Qualche idea? Grazie!

José

UPDATE

faccio url encode al post, e decodificare nel server, mi accorgo che con UTF-8 il lavoro URL decodifica male, ma con la norma ISO-8859-1 funziona bene Quindi il browser invia il post con ISO-8859-1?

risposta

0

Secondo la w3 spec, charset ISO-8859-1 è predefinito quando non viene specificato o no Accept-Charset intestazione è presente. È probabile che gli altri set di cose facciano impazzire.

prova indefiniti che intestazione:

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