1

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

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

    XHR.setRequestHeader("内容类型", "application/x-www-form-urlencoded");

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

4

2 回答 2

2

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

于 2018-10-05T08:05:24.057 回答
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 不是已经了吗?

我尝试在这里浏览默认的内容类型标题。我什么也找不到。但是,当我尝试通过 chrome 的控制台发出 HTTP/POST AJAX 请求时,我注意到 chrome 的默认值为application/xml.

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

于 2013-01-04T05:42:46.327 回答