XMLHttpRequest 的新手,这对我来说有些困惑:
为什么在 xmlhttprequest 中使用 post 方法时必须设置内容类型?
XHR.setRequestHeader("内容类型", "application/x-www-form-urlencoded");
默认值 application/x-www-form-urlencoded 不是已经了吗?
XMLHttpRequest 的新手,这对我来说有些困惑:
为什么在 xmlhttprequest 中使用 post 方法时必须设置内容类型?
XHR.setRequestHeader("内容类型", "application/x-www-form-urlencoded");
默认值 application/x-www-form-urlencoded 不是已经了吗?
这也是一个帮助您通过 application/x-www-form-urlencoded 传递参数的工具。https://www.browserling.com/tools/url-encode。另外我建议您先使用 Postman 工具检查 API 响应,然后在 JS 中使用 Ajax 调用
为什么在 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
.
只是一条建议——永远不要依赖默认行为,除非它明确说明和/或是标准的一部分。为什么不明确设置内容类型?