无法添加HTTP标头

时间:2016-12-11 19:22:15

标签: javascript jquery ajax http http-headers

我尝试使用Authorization标头生成HTTP请求:

$.ajax({
            type: 'GET',
            url: "https://subdomain.domain.com/login",
            beforeSend: function (xhr) {
                xhr.setRequestHeader ("Authorization", "Basic " + btoa('username' + ":" + 'password'));
            }})

但此代码生成的请求不包含授权标头:

  

OPTIONS / login HTTP / 1.1

     

主持人:subdomain.domain.com

     

连接:保持活力

     

Pragma:no-cache

     

缓存控制:无缓存

     

访问控制请求方法:GET

     

原产地:http://localhost:3021

     

User-Agent:Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,   像Gecko)Chrome / 12.3.4567.890 Safari / 537.36

     

Access-Control-Request-Headers:授权

     

接受: /

     

参考者:http://localhost:3021/app.html

     

接受编码:gzip,deflate,sdch,br

     

接受语言:en-US,en; q = 0.8,he; q = 0.6

我做错了什么?

2 个答案:

答案 0 :(得分:0)

这可以解决您的问题。

$.ajax({
    type: 'GET',
    url: "https://subdomain.domain.com/login",
    headers : {
                "Authorization" : "Basic " + btoa('username' + ":" + 'password') 
    }
})

答案 1 :(得分:0)

问题是我试图让跨域请求做一个不允许CORS的服务器。

因此,我看到的请求是使用OPTIONS方法的预检请求。如果在这个预检请求中我得到了正确的响应CORS标头,我会在真实请求中看到我的授权标头。但由于我没有通过预检OPTIONS请求,因此我没有真正的请求,因此我没有看到授权标题。

我通过使用Node.js而不是浏览器来使用API​​来解决它。