当前位置: 首页 > 知识库问答 >
问题:

Ajax, setquiestHeader(), Content-Type, Application/x-www-form-urlencoded和charset

卢书
2023-03-14

当内容类型不是text/html、text/plain或text/xml,而是application/x-www-form-urlencoded内容类型时,我很难理解如何设置字符集。

给出以下(简化的)javascript代码

var xhr = new XMLHttpRequest();

如果我没有显式设置编码,

xhr.open('POST', 'serv.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

Firebug告诉我内容类型是"Application/x-www-form-urlencoded; charset=UTF-8"。

例如,如果我将字符集设置为ISO-8859-1,

xhr.open('POST', 'serv.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');

firebug仍然告诉我“application/x-www-form-urlencoded;charset=UTF-8。”

如果我尝试像

xhr.setRequestHeader('Content-Type', 'text/plain; charset=ISO-8859-1');

那么它就尊重这个角色。

在所有情况下,send()方法都是这样的:

xhr.send('id=9&name=Yoda');

如果内容类型是x-www-form-urlencoded,为什么不尊重我指定的字符集?

注意:我使用ISO-8859-1只是作为一个例子。我的目标是了解正在发生的事情。

共有1个答案

白禄
2023-03-14

Application/x-wow-form-urlencodedmime类型不支持参数(如charset)。如果您查看HTML5规范的这一部分,您将看到字符集是如何确定的(这很复杂)。特别是,在该部分的底部有一个注释提到了如何不能将charset指定为mime类型的参数。

 类似资料:
  • 问题内容: 我曾经有ElasticSearch 5.2,并且刚升级到6.0。 我正在尝试按照此处的指南创建索引模板,但出现错误 我的查询是 问题答案: 要解决此问题,请添加curl选项 这个错误是由于 严格的内容类型检查 在ElasticSearch 6.0中引入,在解释这个岗位 从Elasticsearch 6.0开始,所有包含主体的REST请求也必须提供该主体的正确内容类型。

  • 问题内容: 我已经将Elasticsearch(5.5版)集成到Gitlab中并尝试使用它。这是我从外部Windows客户端发送的命令: 但这不起作用。在客户端上,我得到以下错误: {“错误”:“不支持Content-Type标头[应用程序/ x-www-form-urlencoded]”,“状态”:406} curl:(6)无法解析主机:text curl:(3)[globbing ]第1列 c

  • 感谢您就我在CXF REST提供商方面面临的以下问题提供建议。 我使用Apache CXF开发了REST web服务服务器。以下是合同定义。请注意,这是在Camel上下文中使用的。 以下是我的bean定义: 当我发送内容类型为“application/json”的请求时,一切正常。但当发送内容类型为“application/x-www-form-urlencoded”的请求时,请求会命中服务器,但

  • 我有一个SOAP客户端发送一个请求,它的内容类型定义为应用程序/x-wow-form-urlencoded。我的jax-ws服务器响应HTTP 415错误,抱怨它需要文本/xml的内容类型。 显然,无法更改此客户端,因此我正在尝试找出是否有任何方法可以强制我的服务器接受此内容类型?

  • 问题内容: 之间有什么区别 request.ContentType =“ application / json; charset = utf-8”; 和 webRequest.ContentType =“ application / x-www-form-urlencoded”; 问题答案: 第一种情况是告诉Web服务器您正在发布JSON数据,如下所示: 第二个选项是告诉Web服务器您将对URL中

  • RESTAPI在映射到Java对象时采用输入内容类型:application/x-www-form-urlencoded,如 在表单输入请求中,我正在设置my_name和my_phone的值,但MyRequest对象的myName和myPhone为null。 我正在使用Jackson annotations 2.3 jar 有什么建议吗?可能有什么问题?