以编程方式在javascript中为Content-Type设置http请求标头

Programmatically setting http request headers in javascript for Content-Type

本文关键字:http 设置 请求 Content-Type 中为 编程 方式 javascript      更新时间:2023-09-26

我正在编写一些代码来处理为我的应用程序发送post数据,我想让它,以便我可以从另一个函数发送自定义头,如果我需要它们。我的问题是,我可以默认的东西像"内容类型"的方式我的代码示例下面做,然后覆盖它,或者我需要检查自定义头发送,如果内容类型没有设置,设置为默认值。基本上,在创建post请求期间,您可以通过编程方式覆盖标头吗?

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", formData.length);    
// check for custom headers
if ((headers !== null) && (headers !== undefined)) {
    for(var k in headers) {
        if(headers.hasOwnProperty(k) {
            xmlhttp.setRequestHeader(k.toString(), headers[k]);
        }
    }
}

我发送一个不同的"内容类型"像JSON可能在"头"对象。如果我在Content-Type上做setRequestHeader它会覆盖还是在post请求中发送2个Content-Type报头?

edit:我不知道为什么我在StackOverflow上问这个问题,我刚意识到我可以通过用表单处理程序记录我的头来测试这个,我要去做,我将把问题留在上面。

根据MDN:

设置HTTP请求头的值。你一定要打电话setRequestHeader()在open()之后,但在send()之前。如果这个方法是在同一个头文件中调用多次,这些值被合并到一个请求头。

因此多次调用setRequestHeader()将产生以下结果:

Content-Type: application/x-www-form-urlencoded, application/json