5

Tarayıcının bağlı olarak isteğinin kodlanmasıyla ilgili bazı sorunlar yaşıyorum.Angularjs kodlama ve kötü karakterler istemektedir (FF'de çalışıyor)

Aşağıdaki dökümler, FF ve Chrome arasında farklılık gösteren üstbilgileri gösterir (tüm eşit başlıkları kaldırdım).

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}} 

Krom Ok:

Firefox: "arama" değerinin gösterimi bakınız ok değil

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 çalışmayın

İçerik türünü $ http, ama değil zorlamak için çalıştı. g. Her iki tarayıcıda da yanıtlar tamam. Win 7 "por si las moscas" üzerinden Apache kullanıyorum.

Önemli: İstek, Firebug ve Chrome incelemesinden almak için yukarıdaki üstbilgileri sunucuya gönderilmeden önce hatalı biçimlendirilmiş.

Herhangi bir fikrin var mı? Teşekkürler!

José

GÜNCELLEME

Ben yazılan url kodlamak yapmak ve sunucudaki kod çözme, ben fark o UTF-8 url kod çözme kötü çalışır, ancak ISO-8859-1 ile birlikte İyi çalışmak. Ardından tarayıcı ISO-8859-1 ile gönderiyor mu?

cevap

0

w3 spec'a göre, hiçbir şey belirtilmediğinde veya Accept-Charset başlığı bulunmadığında varsayılan olarak ISO-8859-1 karakter kümesi varsayılan değerdir. Muhtemelen diğer kötüler şeyleri kirletir. bu başlıkla undefining

deneyin:

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