通过 XMLHTTPRequest 发布时无法设置自定义编码

2024-05-05

从上个版本的chrome浏览器的JS控制台来看:

x = new XMLHttpRequest();
x.open('POST', '?a=2');
x.setRequestHeader('Content-Type', 
                   'application/x-www-form-urlencoded; charset="ISO-8859-1"');
x.send({b:2});

请求以错误的编码发送,在网络检查器中,我看到:

Content-Type:application/x-www-form-urlencoded; charset="UTF-8"

当我提供时,另一个非常奇怪的行为charset=ISO-8859-1代替charset="ISO-8859-1",我得到:

Content-Type:application/x-www-form-urlencoded; charset=UTF-8

因为中间发生了一些变化。


编辑2013/12/11

好吧,对我来说真正有问题的一点是,如果您不发送(数据),编码更改将按预期工作。以我之前的例子(注意最后一行的更改):

x = new XMLHttpRequest();
x.open('POST', '?a=2');
x.setRequestHeader('Content-Type', 
                   'application/x-www-form-urlencoded; charset="ISO-8859-1"');
x.send();

然后网络正确输出:

Content-Type:application/x-www-form-urlencoded; charset="ISO-8859-1"

奇怪的...


The W3C XMLHttpRequest 规范 http://www.w3.org/TR/XMLHttpRequest/指示字符集始终为 UTF-8,指定另一个字符集不会强制浏览器更改编码。

请注意,文档 http://api.jquery.com/jQuery.ajax/jQuery 的 $.ajax 方法在设置 Content-Type 时说了完全相同的事情

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 XMLHTTPRequest 发布时无法设置自定义编码 的相关文章

随机推荐