我有一个Node + ExpressJS,其CORS正在通过this middleware。我在使用POST时遇到了麻烦。
这有效:
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
$http({
method: 'POST',
url: domain + '/services/statemap/create',
data: data
}).
但这不是:
$http.defaults.headers.post["Content-Type"] = "application/json";
$http({
method: 'POST',
url: domain + '/services/statemap/create',
data: data
}).
我收到了404错误的OPTIONS。有什么想法吗?
服务器代码:
var cors = require('cors')...
// first version (not working)
app.post('/services/statemap/create', cors(),services.createStateMapPost);
// second version (not working)
app.post('/services/statemap/create', cors({methods: 'GET,POST,PUT,OPTIONS', allowedHeaders:'Accept,Content-Type,Origin,Authorization'}),services.createStateMapPost);
答案 0 :(得分:0)
您没有处理预检请求。在浏览了您正在使用的CORS中间件的文档后,您可能只需要在服务器代码中包含类似的内容:
app.options('/services/statemap/create', cors());
另外,我强烈建议您不要使用库来处理CORS服务器端。它的真的很容易在你的回复中正确地确认CORS请求,而你正在使用的中间件只会使这一点变得更加混乱,恕我直言。