根据浏览器的不同,我对请求的编码有一些问题。
下面的转储显示了FF和Chrome之间不同的标题(我删除了所有相等的标题)。查看"search“值的表示形式:
火狐: 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}}
Chrome: Not 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,但是没有结果。两个浏览器中的响应都工作正常。我使用Apache而不是Win 7 "por si las moscas“。
重要提示:请求在发送到服务器之前有错误的格式,上面的头我要从Firebug和Chrome检查中获取。
有什么想法吗?谢谢!
何塞
更新
我将url编码到帖子中,然后在服务器中解码,我注意到使用UTF-8的url解码效果不佳,但使用ISO-8859-1的效果很好。那么浏览器发送的帖子是ISO-8859-1吗?
发布于 2014-04-14 04:50:21
根据w3 spec,当未指定任何内容或不存在ISO-8859-1
标头时,字符集Accept-Charset
为默认值。这很可能是其他字符集搞砸了。
尝试取消定义该标头:
$http({
method: 'POST',
url: '/page.html',
headers: { 'Accept-Charset': undefined }
})
.success(function(){ /*success fn here*/ });
https://stackoverflow.com/questions/11451563
复制相似问题