我有一个api,需要传递几个标题来获得响应.Below是工作的邮递员
现在我正在进行一次http调用以消耗此功能,以下是使用
的代码 var jobendpoint = 'http://rundeck:4440/api/14/project/Demo/jobs';
var http = new XMLHttpRequest();
http.open('GET',jobendpoint,false);
http.setRequestHeader('Accept','application/json');
http.setRequestHeader('Content-type','application/json');
http.setRequestHeader('X-Rundeck-Auth-Token','XgTeIxQLUiv3lOSl8cXNkt4bxIGFjbzl');
http.send();
var joblist = http.responseText;
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState === XMLHttpRequest.DONE && http.status == 200) {
joblist = http.responseText;
}
}
return joblist
}
但是当我尝试这个时它不起作用。我可以看到标题没有正确传递。我们如何将这些标题传递给这个GET call.can有人帮忙。
更新错误****** 我得到403 forbiddden错误,因为我的标题没有正确设置.Below是在Firefox的网络选项卡中传递的标题的屏幕截图
我已直接在firefox n / w标签中编辑了标题并发送了调用并且它正常工作.Below是屏幕截图
如何按照第二次屏幕截图中的方式添加标题
答案 0 :(得分:1)
XMLHttpRequest.setRequestHeader()
州的MDN页面:
对于您的自定义字段,您可能会在预检响应中遇到" Access-Control-Allow-Headers不允许"向跨域发送请求时发生异常。在这种情况下,您需要设置" Access-Control-Allow-Headers"在服务器端的响应标题中。
在您的情况下,X-Rundeck-Auth-Token
标头是这样的自定义标头,因此此标头必须列在服务器的Access-Control-Allow-Headers
响应标头中,否则您将收到错误以上,请求将失败。
Accept
,Accept-Language
,Content-Type
,Content-Length
是列入白名单的标题,可以设置而不在Access-Control-Allow-Headers
标题中指定它们;还有一个永远无法设置的list of request headers,即使它们已被列出。