keystonejs cors与中间件的错误

时间:2016-05-05 18:29:11

标签: keystonejs

在对keystonejs apis进行http req时,我一直收到一个CORS错误,该浏览器工作正常。我将这个中间件添加到middleware.js中,并在发出请求时调用它:

路由/ middleware.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);
};

并修改了routes / 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);

}

2 个答案:

答案 0 :(得分:0)

我建议您只使用cors模块而不是编写自己的标题:

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

答案 1 :(得分:0)

在keystone.js中:

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

在routes \ index.js中: 之一:

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

或:

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

和所有其他路线相应。 这就是启用CORS标头所必需的。