何时对Ajax和XMLHttpRequest使用setRequestHeader
When to use setRequestHeader for Ajax and XMLHttpRequest
- 对于ajax POST,我是否应该手动将
setRequestHeader
设置为"application/x-www-form-urlencoded"> - 我是否应该手动将
setRequestHeader
设置为"多部分/表单数据"以上传ajax文件 - 关于
setRequestHeader
,XMLHttpRequest和XMLHttpRequest2是否有不同的要求
编程常识告诉我,浏览器可以很容易地根据.open((和.send((方法的值来决定应该发送什么标头。只有当我有一些自定义标头要发送时,才应该使用setRequestHeader
。但这里真的是这样吗?
我正在寻找"到底发生了什么"类型的答案!
xhttp.setRequestHeader('Content-type', 'multipart/form-data'); // for files
xhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); // for POST escaped 'form' data
编辑:
我可以类似地要求连接或内容长度的标题。许多教程建议发送这些标头。但在实践中,这是错误的。浏览器将这些标头视为unsafe
,并发送内部计算的值。
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
第2版:
就像在这个SO问题中,当我删除内容类型和其他无意义的标题时,一切都开始工作了
现在我真的很想知道setRequestHeader
的背后是什么,什么时候才能真正使用它!
对于ajax POST,我是否应该手动将setRequestHeader设置为"application/x-www-form-urlencoded"?
是的。如果您向send()
传递一个字符串(您将为application/x-www-form-urlencoded传递该字符串(,则默认内容类型为text/plain。
对于ajax文件上传,我是否应该手动将setRequestHeader设置为"multipart/form-data"?
没有。如果您使用多部分/表单数据上传文件,那么您将使用FormData对象,XHR将为您设置它。
如果仅将其设置为multipart/form-data
,则将省略边界信息,并且它将不起作用。
XMLHttpRequest和XMLHttpRequest2 是否有不同的要求
XHR 2的工作已经停止。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使用动画实现纸张推车
- 如何在Angular2中使用jQuery插件
- 使用Express捕获参数
- 使用clickToggle并在单击另一个元素时关闭元素
- 如何使用jQuery选择下拉列表的值
- 可以前端maven插件使用节点,npm已经安装
- 使用javascript将动态表从一个html页面打印到另一个html页
- 使用JS将数组转换为json对象
- 使用JSP从服务器检索和显示图像