关于内容类型的两个问题

时间:2013-01-04 05:14:57

标签: javascript xmlhttprequest

XMLHttpRequest的新手,这对我来说有些困惑:

  1. 为什么我们必须在xmlhttprequest中使用post方法时设置内容类型?

    XHR.setRequestHeader(“Content-type”,“application / x-www-form-urlencoded”);

  2. 不是默认值application / x-www-form-urlencoded吗?

2 个答案:

答案 0 :(得分:2)

这也是一种工具,可帮助您通过application / x-www-form-urlencoded传递参数。 https://www.browserling.com/tools/url-encode。另外,我建议您首先使用Postman工具检查API响应,然后在JS中使用Ajax调用

答案 1 :(得分:1)

  

为什么我们必须在xmlhttprequest中使用post方法时设置内容类型?

XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

当您通过AJAX(或通过其他方式)执行HTTP / POST时,HTTP / POST不会要求该特定内容类型。这取决于您(以及由服务器端程序处理它)。阅读第二部分,了解为什么我们必须明确地设置它。

通常,我们将表格序列化(百分位编码 - a = b& c = d格式)并将其发送到服务器。此格式为application/x-www-form-urlencoded。如果您要发送XML,则使用application/xml,对于JSON,您将使用application/json,依此类推。

至于GET请求,没有正文,因此我们真的不需要内容类型标题。

  

不是默认值application / x-www-form-urlencoded已经?

我尝试浏览here以获取默认的内容类型标头。我找不到任何东西。但是,当我尝试通过chrome的控制台执行HTTP / POST AJAX请求时,我注意到chrome的默认值为application/xml

只是一条建议 - 除非明确说明和/或是标准的一部分,否则永远不要依赖默认行为。为什么不明确设置内容类型?