Angular JS - $http未发送头部信息

7
正如标题所示,我需要传递一个授权令牌,但当我检查网络控制台时,我得到了403错误,因为没有接受和授权信息。注意:本例已删除我的授权令牌。
$http({
        url: 'http://api.stubhub.com/search/catalog/events/v2?title="san"',
        dataType: 'json',
        method: 'GET',
        data: '',
        headers: {
            "Content-Type": 'application/json',
            "Authorization": 'Bearer {token}'
        }
    }).success(function(response){
        $scope.searchResponse = response;
    }).error(function(error){
        $scope.error = error;
    });

这个语法看起来正确?有什么问题吗?

编辑:添加了XHR截图

在此输入图片描述

编辑2:这是我的网络流量,通过paste bin的HAR:

http://pastebin.com/fiFngZSy


这个语法是完全没问题的, 调试时,你能截取一下请求后的XHR部分吗?请在请求选项卡上操作。确保token存在,并且你能看到该字段。 - Linial
我使用相同的语法制作了这个 Plunk,在控制台日志中查看它正在工作。http://plnkr.co/edit/fWaAtpF48nHO5gGlgvN7?p=preview - Linial
有趣的是,认证令牌不在那里...这就是为什么我得到了一个403错误。 - Garuuk
如果您能提供更多有关网络流量的详细信息就太好了(使用Chrome,您可以通过右键单击“以HAR格式保存所有内容”在网络视图中保存网络流量)。 - marco.eig
你找到答案了吗,@Garuuk? - Julio Marins
很遗憾,没有。最终我使用了SeatGeek获取我想要的数据,效果非常好。然而,我在请求支持后的三个月后收到了StubHub开发团队的回复,但是没有任何有用的信息得到了体现。 - Garuuk
1个回答

1
在XHR请求中设置自定义标头会触发预检请求。
我敢打赌你看到了一个没有Authorization头的OPTIONS请求,以及相应的响应中Access-Control-Allow-Headers头值未列出Authorization,或者API甚至不允许未经授权的OPTIONS请求。
我不知道Stubhub API是否返回符合CORS的响应。

是的。当我使用restangular时,我实际上可以得到200。我以为restangular是问题所在,所以我切换到了$http。这是我的另一个关于restangular的线程https://dev59.com/yITca4cB1Zd3GeqPB_25 - Garuuk

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