5

ブラウザによっては、リクエストのエンコーディングに問題があります。

以下のダンプは、FF と Chrome の間で異なるヘッダーを示しています (すべての等しいヘッダーを削除しました)。「検索」値の表現を参照してください。

Firefox: わかりました

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 を強制しようとしましたが、何もしませんでした。両方のブラウザでの応答は正常に機能します。「por si las moscas」で Apache over Win 7 を使用しています。

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

何か案が?ありがとう!

ホセ

アップデート

投稿にURLをエンコードし、サーバーでデコードすると、UTF-8ではURLデコードがうまく機能しないことに気付きましたが、ISO-8859-1では正常に機能します。次に、ブラウザは ISO-8859-1 で投稿を送信しますか?

4

1 に答える 1

0

w3 仕様によると、何も指定されていないか、ヘッダーが存在しない場合、charsetISO-8859-1がデフォルトです。Accept-Charset他の文字セットが問題を引き起こしている可能性があります。

そのヘッダーを定義解除してみてください:

$http({
   method: 'POST',
   url: '/page.html',
   headers: { 'Accept-Charset': undefined }
})
.success(function(){ /*success fn here*/  });
于 2014-04-13T20:50:20.540 に答える