XMLHttpRequest的新手,这对我来说有些困惑:
为什么我们必须在xmlhttprequest中使用post方法时设置内容类型?
XHR.setRequestHeader(“Content-type”,“application / x-www-form-urlencoded”);
不是默认值application / x-www-form-urlencoded吗?
答案 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
。
只是一条建议 - 除非明确说明和/或是标准的一部分,否则永远不要依赖默认行为。为什么不明确设置内容类型?