AngularJS - 设置GET请求的HTTP头部

6
也许这是一个普遍的问题,在互联网上可以找到相关内容,但我在这里找到了解决方法。
我按照以下链接中提供的方法进行了操作: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


1
你排除过CORS可能是问题了吗?https://dev59.com/cXjZa4cB1Zd3GeqPclOb - miqh
1
很确定这是一个CORS请求。如果请求是发送到托管应用程序的同一服务器,那么不确定为什么会有api.host。API提供者不允许CORS也是完全合理的,因为它似乎正在使用未安全通道进行令牌身份验证。 - ivarni
2个回答

1
我认为如果您查看您提到的链接,您将遇到与作者相同的问题,该帖子的作者确实指出这是CORS问题-他正在与通信的服务器不支持CORS,并在自己的帖子中确认了这一点。
至于为什么会出现OPTIONS请求,这是因为CORS会向服务器发出“预检”请求,以确定是否支持CORS,然后才会进行实际请求。

0
您正在看到一个OPTIONS请求,很可能是因为您正在进行跨源请求(CORS)。首先,您的服务器应该支持CORS(通过响应带有Access-Control-Allow-Origin头的OPTIONS请求来实现)。
如果您正在进行经过身份验证的跨源请求,则需要在发出请求时将withCredentials设置为true
$http.get(url, { withCredentials: true })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接