繁体   English   中英

Angular $ HTTP可与CORS和application / x-www-form-urlencoded一起使用,但可通过application / json获得OPTIONS 404

[英]Angular $HTTP works with CORS and application/x-www-form-urlencoded but gets OPTIONS 404 with application/json

我有一个Node + ExpressJS,带有通过该中间件工作的CORS。 我在使用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错误的选项。 有任何想法吗?

服务器代码:

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);

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

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

另外,我强烈建议您不要使用库来处理CORS服务器端。 在响应中正确确认CORS请求确实很容易,而中间件(如您正在使用的中间件)会使这一点更加混乱,恕我直言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM