AngularJS未发送Auth标头

时间:2017-06-12 11:14:10

标签: angularjs header

我试图制作一个拦截用户令牌的拦截器,如果存在于每个请求上,则该令牌存在但它不会发送它...在调用之后我查看F12(Chrome Dev Tools)的调用和授权标题不存在......

但是,如果我一步一步地调试它,我可以看到config.headers.Authorization是如何存在我的令牌......但仍然没有通过请求发送它...请问一些帮助吗?

这是我的拦截器

$httpProvider.interceptors.push(function($q, $location, $cookies){
    return {
        request: function(config){
            config.headers = config.headers || {};
            let token = $cookies.get('user');
            if (token) {
                config.headers.Authorization = 'Bearer ' + token;
            }
            return config;
        },
        response: function(response){
            return response;
        },
        responseError: function(response){
            if(response.status === 401 || response.status === 403){
                $location.path('/login')
            }
            return $q.reject(response);
        }
    }
  })

CORS配置

var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS');
    res.header('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Authorization');
    next();
}

发送前配置

config before it be send

req / res预检 req/res preflight

1 个答案:

答案 0 :(得分:2)

确保您的401请求不需要" auth"你会没事的W3 spec for CORS preflight requests表示应排除用户凭据。

如果OPTIONS请求返回了HTTP状态OPTIONS,则客户端不应发送子请求。但似乎某些浏览器存在错误。即使401请求返回node.js,此浏览器也会发送子请求。

req.method === 'OPTIONS'中,您可以使用function addImageToCanvas(imgSrc) { fabric.Object.prototype.transparentCorners = false; fabric.Image.fromURL(imgSrc, function(myImg) { var img1 = myImg.set({ left: 20, top: 20, width: 460, height: 460 }); img1.selectable = false; canvas.add(img1); var clipRectangle = new fabric.Rect({ originX: 'left', originY: 'top', left: 150, top: 150, width: 200, height: 200, fill: 'transparent', /* use transparent for no fill */ strokeDashArray: [10, 10], stroke: 'red', selectable: false }); clipRectangle.set({ clipFor: 'layer' }); canvas.add(clipRectangle); }); } 检查请求方法。