2014-11-02 6 views
2

У меня есть два приложения nodejs, сервер 1 работает с пользовательским интерфейсом, сервер 2 обеспечивает логику конца и услуги api. Я пытаюсь вызвать метод $ .post jquery из приложения UI на сервере 1, который отправляет api на сервере 2, я получаю ошибку ограничения перекрестного домена,Node Express Запрос CORS

Я добавил следующий код в app.js и маршрутах/index.js в сервере UI (сервер 1), но не напрасно.

app.js файл

enter code here 

app.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); 
    next(); 
}); 

маршруты/файл index.js

router.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); 
    next(); 
}); 

Я новичок в nodejs/экспресс.

+0

Вы пытались использовать промежуточное программное обеспечение ['cors'] (https://github.com/troygoode/node-cors) вместо того, чтобы пытаться вручную? – mscdex

ответ

3

Убедитесь, что ваше экспресс-приложение действительно отвечает на запрос CORS OPTIONS. Браузер сначала отправит предварительный запрос HTTP OPTIONS перед POST. Ваш код устанавливает заголовки, но на самом деле не посылает ответы. Что-то вроде:

router.options('/my/post/path', function (req, res) { 
    console.log('Got CORS OPTIONS request for', req.originalUrl); 
    res.send(); 
}); 

Но в конечном счете, как MSCDEX прокомментировал использовать библиотеку CORS промежуточного слоя из НПМ вместо кодирования самостоятельно. (Хотя кодирование ваших собственных прекрасно, как учебное упражнение).

+0

Я добавляю CORS к серверному коду, который он работает, благодаря вам обоим за вашу помощь. Интересно, что cors npm дает мне проблему в героку. – realnumber