2014-02-06 2 views
1

Rest API с LocomotiveJs с использованием CORS. Работает на локальной машине, но не на Amazon или HerokuRest API с LocomotiveJs с использованием CORS. Работает на локальной машине, но не на Amazon или Heroku

Я сделал REST api с помощью LocomotiveJs, и теперь я пытаюсь включить CORS на нем. Я добавил следующий код в свою «все» среду (config/environment/all.js).

this.use(function crossOrigin(req,res,next){ 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With,Authentication"); 
    res.header("Access-Control-Allow-Methods","GET,POST,PUT,DELETE,OPTIONS"); 

    return next(); 
}); 

Он работает на моей локальной машине, но когда я развернуть его на Heroku или AWS я получил ошибку 404 Http, когда клиент отправляет команду OPTIONS.

Для того, чтобы выделить эту проблему, я разработал простой экспресс-приложение, с помощью следующего кода:

var express = require('express'); 
var app = express(); 

app.all('*', function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With,Authentication"); 
    next(); 
}); 

app.get('/test', function(req, res){ 
    res.set('Content-Type', 'application/json'); 
    res.send({ 'Hello' : 'World' }); 
}); 

var port = process.env.PORT || 5000; 

app.listen(port); 
console.log('Listening on port ' + port); 

И этот код работал при развертывании на Heroku!

У вас, ребята, есть мнение о том, почему он работал на моей локальной машине и не работал на серверах?

ответ

3

Я нашел решение:

Теперь я использую это можно, подсоединив промежуточное программное обеспечение: https://github.com/troygoode/node-cors

Тогда я просто изменил мой all.js файл, добавив следующую строку:

this.use(cors()); 

Я развернутую это на Хереку и работает сейчас.