AngularJS: $http 拦截器将每个调用方法更改为 OPTIONS
AngularJS: $http interceptor change every call method to OPTIONS
因此,我试图拦截 http 调用以在每个调用上添加授权 header(如果存在)。
这很好用,除了无论我使用哪种 http 方法(GET、POST、DELETE),它都会使用 OPTIONS 方法发送请求。我究竟做错了什么?
服务器是带有restify的nodejs。
angular.module('mymodule').factory('RequestService', function () {
var token = null;
var service = {
setToken: function setToken(_token) {
token = _token;
},
getToken: function getToken() {
return token;
},
request: function request(config) {
if (token) {
config.headers['Authorization'] = 'Token' + token;
}
return config;
}
}
return service;
}).config(function($httpProvider) {
$httpProvider.interceptors.push('RequestService');
}
当你在 Front-End 端实现自己的拦截器时,你应该记住 CORS:
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', req.headers.origin || "*");
res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'content-Type,x-requested-with,authorization123456,accept');
next();
});
我们应该记得在 Methods 和 Headers 上设置 Acces-Controll-Allow。在我的例子中,它是 'authorization123456' 我放置我的令牌的地方,它被添加到来自 AngularJS.
的每个请求中
因此,我试图拦截 http 调用以在每个调用上添加授权 header(如果存在)。 这很好用,除了无论我使用哪种 http 方法(GET、POST、DELETE),它都会使用 OPTIONS 方法发送请求。我究竟做错了什么?
服务器是带有restify的nodejs。
angular.module('mymodule').factory('RequestService', function () {
var token = null;
var service = {
setToken: function setToken(_token) {
token = _token;
},
getToken: function getToken() {
return token;
},
request: function request(config) {
if (token) {
config.headers['Authorization'] = 'Token' + token;
}
return config;
}
}
return service;
}).config(function($httpProvider) {
$httpProvider.interceptors.push('RequestService');
}
当你在 Front-End 端实现自己的拦截器时,你应该记住 CORS:
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', req.headers.origin || "*");
res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'content-Type,x-requested-with,authorization123456,accept');
next();
});
我们应该记得在 Methods 和 Headers 上设置 Acces-Controll-Allow。在我的例子中,它是 'authorization123456' 我放置我的令牌的地方,它被添加到来自 AngularJS.
的每个请求中