5

根据浏览器,我对请求的编码有一些问题。

下面的转储显示了 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,但没有。两个浏览器中的响应都可以正常工作。我在 Win 7“por si las moscas”上使用 Apache。

重要提示:请求在发送到服务器之前格式错误,我从 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 回答