Разрешающая проверка CORS в приложении meanjs.org во время разработки?

Я использую стек Meanjs.org для разработки простого приложения. Сейчас я работаю на мобильном клиенте с ионной рамкой.

В настоящее время у меня возникает проблема с проверкой CORS, которая вызывает ошибку при тестировании ионного приложения, как описано здесь: http://blog.ionic.io/handling-cors-issues-in-ionic/ Хотя я мог бы настроить прокси, как описано в этой ссылке это также работает, если я добавляю заголовок ответа на стороне сервера, например: res.header("Access-Control-Allow-Origin", "*");

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

Я также попытался изменить конфигурацию lusca в настройке config/env/default.js xssProtection: false немного не работает?

Как я могу во время разработки включить следующий заголовок ответа res.header("Access-Control-Allow-Origin", "*"); во всех конечных точках возможно ли это или единственное жизнеспособное решение, использующее meanjs.org + ionic во время разработки, - это настройка прокси-сервера?

Спасибо

3 ответа

Решение

Через некоторое время я наконец-то получил подсказку на форумах meanjs.org и нашел решение.

Создайте следующий метод в файле config/lib/express.js:

/**
 * Disable CORS check to be used during development with access from mobile clients (currently tested with ionic)
 */
module.exports.disableCORSForDev = function(app) {
  app.all('/*', function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Methods', 'POST');
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    next();
  }).options('*', function(req, res) {
    res.end();
  });
  var corsOptionsDelegate = function(req, callback) {
    var corsOptions = { credentials: true };
    callback(null, corsOptions); // callback expects two parameters: error and options
  };
  app.use(cors(corsOptionsDelegate));
};

добавил следующее к методу init в этом же классе сразу после объявления var app = express();

var app = express();

this.disableCORSForDev(app);

Примечание. Это решение на стороне сервера, позволяющее обойти cors во время разработки, и его не следует использовать в рабочей среде. Многие могут предпочесть вместо этого настроить прокси на ионном клиенте, как описано в этой ионной статье.

Для разработки вы можете установить прокси, чтобы избежать проблем с CORS,

Настройте свой файл ionic.project так:

{
 "name": "proxy-example",
 "app_id": "",
 "proxies": [{
  "path": "/api",
  "proxyUrl": "http://example.com/api"
 }]
}

Затем из контроллера вызова API, как показано ниже,

.controller('MyController', function($http) {
     $http.post('/api/getMoreDeatils',data)
          .then(function (response) {
       //do something
     })
})

Надеюсь, это полезно для вас

Попробуйте использовать промежуточное программное обеспечение в основном файле вашего сервера:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});
Другие вопросы по тегам