如何为XMLHttpRequest请求传递标头

时间:2017-07-04 17:01:04

标签: javascript http

我有一个api,需要传递几个标题来获得响应.Below是工作的邮递员

enter image description here

现在我正在进行一次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的网络选项卡中传递的标题的屏幕截图 enter image description here

我已直接在firefox n / w标签中编辑了标题并发送了调用并且它正常工作.Below是屏幕截图

enter image description here

如何按照第二次屏幕截图中的方式添加标题

1 个答案:

答案 0 :(得分:1)

XMLHttpRequest.setRequestHeader()州的MDN页面:

  

对于您的自定义字段,您可能会在预检响应中遇到" Access-Control-Allow-Headers不允许"向跨域发送请求时发生异常。在这种情况下,您需要设置" Access-Control-Allow-Headers"在服务器端的响应标题中。

在您的情况下,X-Rundeck-Auth-Token标头是这样的自定义标头,因此此标头必须列在服务器的Access-Control-Allow-Headers响应标头中,否则您将收到错误以上,请求将失败。

AcceptAccept-LanguageContent-TypeContent-Length是列入白名单的标题,可以设置而不在Access-Control-Allow-Headers标题中指定它们;还有一个永远无法设置的list of request headers,即使它们已被列出。