Angular $ HTTP适用于CORS和application / x-www-form-urlencoded但使用application / json获取OPTIONS 404

时间:2014-03-12 14:19:40

标签: node.js angularjs express cors

我有一个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);

1 个答案:

答案 0 :(得分:0)

您没有处理预检请求。在浏览了您正在使用的CORS中间件的文档后,您可能只需要在服务器代码中包含类似的内容:

app.options('/services/statemap/create', cors());

另外,我强烈建议您不要使用库来处理CORS服务器端。它的真的很容易在你的回复中正确地确认CORS请求,而你正在使用的中间件只会使这一点变得更加混乱,恕我直言。