NodeJS/Express PUT 请求失败:请求的资源上不存在 'Access-Control-Allow-Origin' header
NodeJS/Express PUT request failing with: No 'Access-Control-Allow-Origin' header is present on the requested resource
我正在尝试使用 NodeJS/Express 构建服务(位于与调用它的站点不同的子域中)。
我的 GET 和 POST 方法工作正常,但我在 PUT 上遇到了一些问题。
我已尝试实施 corser 但我仍然收到以下错误:
XMLHttpRequest cannot load
http://services.example.org/jobs/_id/5503bb957e4eacd821b5c046. No
'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://example.org' is therefore not allowed access.
下面是我的 corser 实现。我知道其中一些可能是多余的或不必要的。我只是想找到使 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();
});
希望这对以后遇到类似问题的人有用。
我正在尝试使用 NodeJS/Express 构建服务(位于与调用它的站点不同的子域中)。
我的 GET 和 POST 方法工作正常,但我在 PUT 上遇到了一些问题。
我已尝试实施 corser 但我仍然收到以下错误:
XMLHttpRequest cannot load http://services.example.org/jobs/_id/5503bb957e4eacd821b5c046. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.org' is therefore not allowed access.
下面是我的 corser 实现。我知道其中一些可能是多余的或不必要的。我只是想找到使 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();
});
希望这对以后遇到类似问题的人有用。