我试图制作一个拦截用户令牌的拦截器,如果存在于每个请求上,则该令牌存在但它不会发送它...在调用之后我查看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();
}
发送前配置
req / res预检
答案 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);
});
}
检查请求方法。