5

ブラウザに応じてリクエストのエンコーディングに問題があります。Angularjsがエンコーディングと不正な文字を要求しています(FFでうまく動作します)

以下のダンプは、FFとChromeで異なるヘッダーを示します(すべてのヘッダーを削除しました)。

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

クローム: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が

を作業しないでください "検索" 値の表現を参照してください。私は$ httpでContent-Typeを強制しようとしましたが、何もしませんでしたg。両方のブラウザの応答はOKです。私はWin 7 "por si las moscas"よりもApacheを使用しています。

重要:リクエストはサーバーに送信される前に正しくありません。上記のヘッダーはFirebugとChromeから取得して検査します。

ありがとう!

ホセ・

UPDATE

私はポストにURLエンコードを行い、サーバ内のデコードは、私が気づくことUTF-8 URLデコード悪い作品が、ISO-8859-1ととうまく動作します。ブラウザはISO-8859-1で投稿を送信しますか?

答えて

0

w3 specによれば、何も指定されていないか、またはAccept-Charsetヘッダーが存在しない場合は、文字セットISO-8859-1がデフォルトになります。おそらく、他の文字セットが物を汚している可能性があります。

は、そのヘッダーを未定義にしてみてください。

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