2016-05-05 11 views
0

Ich bekomme immer einen CORS-Fehler, wenn Sie eine HTTP-Anforderung an Keystonejs Apis, die im Browser gut funktionieren. Ich habe diese Middleware middleware.js und es wird immer genannt, wenn die antragstell:Keystonejs Cors Fehler mit Middleware

Routen/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); 
}; 

und modifiziert, um die Routen/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); 

} 

Antwort

0

In keystone.js:

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

In Routen \ index.js: entweder:

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

oder:

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

und alle anderen Routen entsprechend. Das ist alles, was nötig ist, um CORS-Header zu aktivieren.