gpt4 book ai didi

javascript - 何时对 Ajax 和 XMLHttpRequest 使用 setRequestHeader

转载 作者:行者123 更新时间:2023-12-02 16:01:13 25 4
gpt4 key购买 nike

  1. 我是否应该为 ajax POST 手动将 setRequestHeader 设置为“application/x-www-form-urlencoded”?
  2. 我是否应该手动将 setRequestHeader 设置为“multipart/form-data”以进行 ajax 文件上传?
  3. 对于 setRequestHeader,XMLHttpRequest 和 XMLHttpRequest2 有不同的要求吗?

常见的编程意识告诉我,浏览器可以根据 .open() 和 .send() 方法的值轻松决定应发送哪些 header 。仅当我有一些自定义 header 要发送时才应使用 setRequestHeader 。但这里的情况真的是这样吗?

我正在寻找“幕后到底发生了什么”类型的答案!

.

xhttp.setRequestHeader('Content-type', 'multipart/form-data');  // for files

xhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); // for POST escaped 'form' data

编辑:

我可以类似地要求连接或内容长度 header 。许多教程建议发送这些 header 。但实际上这是错误的。浏览器将这些 header 视为不安全并发送内部计算的值。

http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

编辑2:

this SO question 所示当我删除内容类型和其他无意义的标题时,一切都开始工作。
现在我真的很想知道 setRequestHeader 的底层是什么以及我什么时候应该真正使用它!

最佳答案

Should I ever manually set setRequestHeader to 'application/x-www-form-urlencoded' for ajax POST?

是的。如果您传递 send() 一个字符串(您将用于 application/x-www-form-urlencoded),则默认内容类型为 text/plain。

Should I ever manually set setRequestHeader to 'multipart/form-data' for ajax file upload?

没有。如果您使用 multipart/form-data 进行文件上传,那么您将使用 FormData 对象,XHR 将为您设置它。

如果您将其设置为 multipart/form-data 那么您将忽略边界信息,并且它将不起作用。

Are there different requirements for XMLHttpRequest and XMLHttpRequest2

XHR 2 的工作已停止。

关于javascript - 何时对 Ajax 和 XMLHttpRequest 使用 setRequestHeader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com