NodeJS / Express PUT请求失败:请求的资源上没有“Access-Control-Allow-Origin”标头

我正在尝试使用NodeJS / Express构build一个服务(驻留在不同于调用该站点的子域上)。

我的GET和POST方法工作正常,但是我对PUT有点麻烦。

我试图实施corser,但我仍然收到以下错误:

XMLHttpRequest无法加载http://services.example.org/jobs/_id/5503bb957e4eacd821b5c046 。 请求的资源上没有“Access-Control-Allow-Origin”标题。 Origin'http: //example.org '因此不被允许访问。

以下是我的corser实现。 我明白,其中一些可能是多余的或不必要的。 我只是想find魔术设置,使PUT请求成功完成。

app.use(corser.create({ simpleRequestHeaders: corser.simpleRequestHeaders.concat(["PUT"]), simpleRequestHeaders: corser.simpleRequestHeaders.concat(["OPTIONS"]), simpleResponseHeaders: corser.simpleResponseHeaders.concat(["PUT"]), simpleResponseHeaders: corser.simpleResponseHeaders.concat(["OPTIONS"]), requestHeaders: corser.simpleRequestHeaders.concat(["X-Requested-With"]) })); app.all('*', function(request, response, next) { response.header('Access-Control-Allow-Origin', '*'); response.header('Access-Control-Allow-Headers', 'X-Requested-With'); response.header('Access-Control-Allow-Headers', 'Content-Type'); response.header('Access-Control-Allow-Methods', 'GET'); response.header('Access-Control-Allow-Methods', 'POST'); response.header('Access-Control-Allow-Methods', 'PUT'); response.header('Access-Control-Allow-Methods', 'DELETE'); response.header('Access-Control-Allow-Methods', 'OPTIONS'); next(); }); 

我与corser的首席开发人员取得联系 ,发现他们非常有帮助。

这是通过我的CORS问题的神奇的子弹。

 var corser = require('corser'); 

 // Configure CORS (Cross-Origin Resource Sharing) Headers app.use(corser.create({ methods: corser.simpleMethods.concat(["PUT"]), requestHeaders: corser.simpleRequestHeaders.concat(["X-Requested-With"]) })); app.all('*', function(request, response, next) { response.header('Access-Control-Allow-Headers', 'Content-Type,X-Requested-With,Authorization,Access-Control-Allow-Origin'); response.header('Access-Control-Allow-Methods', 'POST,GET,DELETE'); response.header('Access-Control-Allow-Origin', '*'); next(); }); 

希望这对将来有类似问题的人来说是有用的。