5

我有一些問題,取決於瀏覽器的請求的編碼。Angularjs請求編碼和錯誤的字符(在FF工作正常)

下面的轉儲顯示FF和Chrome之間不同的標題(我刪除了所有相同的標題)。看到 「搜索」 值的表示:

火狐:好的

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

鉻:也不行

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不要工作

我試圖強制$ http中的Content-Type,但沒有G。兩個瀏覽器的響應都可以正常工作。我在Win 7上使用Apache「por si las moscas」。

重要提示:請求在發送到服務器之前有不好的格式,上面的標題是我從Firebug和Chrome檢查的。

有什麼想法?謝謝!

何塞

UPDATE

我做URL編碼到了後,和解碼服務器,我注意到,使用UTF-8的URL解碼工作不好,但與ISO-8859-1工作正常。然後瀏覽器發送ISO-8859-1?

回答

0

根據w3 spec,字符集ISO-8859-1在沒有指定任何內容或不存在Accept-Charset標頭時是默認的。這很可能是其他的字符串弄髒了事情。

嘗試取消定義這個頭:

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