Angularjs 跨域API调用时角度授权标头为空。为什么?

Angularjs 跨域API调用时角度授权标头为空。为什么?,angularjs,cross-domain,authorization,Angularjs,Cross Domain,Authorization,我有一个带有工厂方法的Angular(1.3.8)SPA,它试图在进行跨域API调用之前添加一个基本授权头。 该API是一个ASPNET WEB API,但完全启用了CORS。API正在使用基本身份验证消息处理程序 问题在于,在对API的第一次调用中,根本没有授权头,即使进行API调用的代码如下所示: $http.defaults.headers.common.Authorization = 'Basic blah...'; $http.get('http://my-weba

我有一个带有工厂方法的Angular(1.3.8)SPA,它试图在进行跨域API调用之前添加一个基本授权头。 该API是一个ASPNET WEB API,但完全启用了CORS。API正在使用基本身份验证消息处理程序

问题在于,在对API的第一次调用中,根本没有授权头,即使进行API调用的代码如下所示:

    $http.defaults.headers.common.Authorization = 'Basic  blah...';

    $http.get('http://my-webapi-url').
    success(function(data, status, headers, config) {
        ...
     }).
    error(function(data, status, headers, config) {
        alert('error ' + status);
    });

API在初始调用时没有收到授权,当然是用401拒绝调用。为什么一开始就没有一个AUTH头呢

在浏览器控制台中检查请求头时,您会看到什么?在从浏览器查看网络流量时,您会在GET请求之前看到选项请求吗?Enzey在这里询问相关问题。事实证明,GET请求之前有一个OPTIONS请求,服务器API用401质询响应了这个OPTIONS请求。幸运的是,我也控制了API服务,所以我修改了它,如果请求是“飞行前”(即选项),就不会发出401质询。这就解决了问题。