![](/img/trans.png)
[英]fetch() header shows as application/x-www-form-urlencoded instead of application/json
[英]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.