以编程方式在javascript中为内容类型设置http请求头
我正在编写一些代码来处理为我的应用程序发送post数据,我想这样做,以便在需要时可以从另一个函数发送自定义标题。我的问题是,我是否可以像下面的代码示例那样默认“内容类型”,然后覆盖它,或者我是否需要检查正在发送的自定义标题,如果未设置内容类型,则将其设置为默认值。基本上,在创建post请求的过程中,您可以通过编程方式覆盖头吗以编程方式在javascript中为内容类型设置http请求头,javascript,post,content-type,Javascript,Post,Content Type,我正在编写一些代码来处理为我的应用程序发送post数据,我想这样做,以便在需要时可以从另一个函数发送自定义标题。我的问题是,我是否可以像下面的代码示例那样默认“内容类型”,然后覆盖它,或者我是否需要检查正在发送的自定义标题,如果未设置内容类型,则将其设置为默认值。基本上,在创建post请求的过程中,您可以通过编程方式覆盖头吗 xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp
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,可能在“headers”对象中。如果我再次在内容类型上设置RequestHeader,它会在post请求中覆盖还是发送两个内容类型标题
编辑:我不知道为什么我在StackOverflow上问这个问题,我刚刚意识到我可能可以通过使用表单处理程序记录我的标题来测试这个问题,我现在就去做,我还是把这个问题留到后面吧。根据:
设置HTTP请求头的值。你必须打电话
setRequestHeader()在open()之后,但在send()之前。如果这个方法是
使用相同的头多次调用,值合并到
一个请求头
因此多次调用setRequestHeader()
将产生以下结果:
Content-Type: application/x-www-form-urlencoded, application/json
是的,我只是用一个curl请求和一个记录头的php脚本来测试这个问题。。正是这样。我的假设是双重错误的,它既不覆盖也不发送两个,而是合并。所以我想如果我想在我的函数中使用默认的头,我需要首先检查发送的头。注意
for..in
循环,不要使用hasOwnProperty
@AlexW,即使阅读了相关内容,我也不清楚它的作用,但我添加到了我的循环中,它防止了对对象原型链中的属性进行不必要的迭代。大多数情况下,您不希望迭代原型属性。