ошибка keystonejs cors с промежуточным программным обеспечением

Я продолжаю получать сообщение об ошибке CORS при создании HTTP-запроса на api keystonejs, который отлично работает в браузере. Я добавил это промежуточное ПО в middleware.js, и оно вызывается при выполнении запроса:

маршруты/промежуточное ПО.js

exports.corsAPI = function (req,res,next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header('Access-Control-Allow-Headers', 'Content-Type');

  keystone.initAPI(req, res, next);
};

и изменил маршруты/index.js

exports = module.exports = function(app) {

    app.get('/api/post/list', middleware.corsAPI, routes.api.posts.list);
    app.all('/api/post/create', middleware.corsAPI, routes.api.posts.create);
    app.get('/api/post/:id', middleware.corsAPI, routes.api.posts.get);
    app.all('/api/post/:id/update', middleware.corsAPI, routes.api.posts.update);
    app.get('/api/post/:id/remove', middleware.corsAPI, routes.api.posts.remove);

}

person user1572796    schedule 05.05.2016    source источник


Ответы (2)


Я рекомендую вам просто использовать модуль cors вместо написания собственных заголовков:

https://www.npmjs.com/package/cors

person André Perazzi    schedule 24.01.2017

В keystone.js:

keystone.set('cors allow origin', true);
keystone.set('cors allow methods', true);
keystone.set('cors allow headers', true);

В route\index.js: либо:

app.get('/api/stuff', [keystone.middleware.api, keystone.middleware.cors], routes.api.workshop.getStuff);

or:

app.get('/api/stuff', keystone.middleware.cors, routes.api.workshop.getStuff);

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

person asliwinski    schedule 04.07.2017