AngularJS:$ http拦截器将每个调用方法更改为OPTIONS

所以,我试图拦截http调用,如果存在每个调用添加授权标头。 这可以很好的解决这个问题,不pipe我使用哪个http方法(GET,POST,DELETE),它都会使用OPTIONS方法来发送请求。 我究竟做错了什么?

服务器是nodejs与restify。

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'); } 

当你在前端实现你自己的拦截器时,你应该记住关于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(); }); 

我们应该记得在方法和标题上设置访问控制 – 允许。 在我的情况下,它是'authorization123456',我把我的令牌添加到来自AngularJS的每个请求。

Interesting Posts