我正在用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的內容。
我在做什麼錯?