我正在用Keystone支持的Aurelia构建SPA。在Keystone.js API中处理OPTIONS请求
当从我的Aurelia视图发布时,Content-Type
设置为application/json
,当然,来自客户端的请求会产生OPTIONS
请求。
我的梯形校正初始化设置上CORS为当地的发展大开:
keystone.init({
...
'cors allow origin': true,
'cors allow methods': true,
'cors allow headers': true,
...
});
我对API梯形航线绑定是:
exports = module.exports = function(app) {
app.all('/api/*', keystone.middleware.cors);
app.post('/api/inquiry', keystone.middleware.api, routes.api.inquiries.post);
};
我的梯形API的看法是:
var keystone = require('keystone'),
Inquiry = keystone.list('Inquiry');
exports.post = function(req, res) {
var inquiry = new Inquiry.model({
name: {
first: req.body.name.first,
last: req.body.name.last
},
email: req.body.email,
phone: req.body.phone,
question: req.body.question
});
inquiry.save(function(error) {
if (error) {
return res.apiError(error);
}
return res.apiResponse({
'inquiry': inquiry
});
});
};
我遇到的问题是OPTIONS请求404s而不是返回200.
即使我手动处理OPTIONS请求并简单地返回状态200,POST请求不会遵循OPTIONS请求。我误解了OPTIONS请求生命周期?
我也试过传递不同的内容类型,如'application/x-www-form-urlencoded
和text/plain
,这些数据匹配那些不会导致OPTIONS请求的格式,但是Keystone不分析这些POST的内容。
我在做什么错?