2

因此,我试图拦截 http 调用,以便在每个调用中添加 Authorization 标头(如果存在)。这很好用,除了我使用哪种 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');
}
4

1 回答 1

1

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

我们应该记住在方法和标题上设置 Acces-Controll-Allow。在我的情况下,它是“authorization123456”,我将我的令牌添加到来自 AngularJS 的每个请求中。

于 2015-02-18T19:50:50.420 回答