AngularJS - 为GET请求设置HTTP标头

时间:2014-07-03 01:58:07

标签: javascript angularjs http-headers authorization

可能这是一个普遍问题,可以在互联网上找到,但我得到的就是这里。

Adding a custom header to HTTP request using angular.js

所以我也遵循了相同的规则,并将代码更改为

设置标题

 var config = {headers:  {
                'Authorization': 'XXXYYY token="xxxxxxxx", realm="dash-api"',
                "X-Testing" : "testing"
                }
            };

get请求调用:

return $http.get(api.host+'/agn/12/adv/1860/cam?status=1', config).then(function (response) {
                    return {
                        status:"success",
                        data:response.data.data.active
                    };
                }, function (error) {
                    return {
                        status:"error",
                        data:error
                    }
                });

正如您所看到的,请求是在方法类型OPTIONS中进行的,并且请求中未设置Authorization令牌。

请帮我解决这个问题,因为我两天都在挣扎。

非常感谢。

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为,如果你看一下你所指的链接,你就会遇到与作者相同的问题,该帖子的作者确实说这是一个CORS问题 - 他正在与他进行通信的服务器&#39他支持CORS,他在自己的评论中证实了这一点。

至于你为什么要收到OPTIONS请求,这是因为CORS在飞行前做出了#34;请求服务器确定是否支持CORS,然后才能提出实际请求。

答案 1 :(得分:0)

您最有可能看到OPTIONS请求,因为您正在发出跨域请求(CORS)。首先,您的服务器应该支持CORS(通过在响应中设置Access-Control-Allow-Origin标头来响应OPTIONS请求。)

如果您要进行经过身份验证的跨域请求,则需要在发出请求时将withCredentials设置为true

$http.get(url, { withCredentials: true })