Я строю SPA с Aurelia, поддерживаемый Keystone.Обработка запроса OPTIONS в API Keystone.js
При проводке с моей точкой зрения Аурелия, то Content-Type
устанавливаются в application/json
, который, конечно, понесет в OPTIONS
запрос при выходе из клиентской стороны.
Мои настройки Keystone инициализации широко открыты на CORS для местного развития:
keystone.init({
...
'cors allow origin': true,
'cors allow methods': true,
'cors allow headers': true,
...
});
Мои Keystone маршрут привязки для API являются:
exports = module.exports = function(app) {
app.all('/api/*', keystone.middleware.cors);
app.post('/api/inquiry', keystone.middleware.api, routes.api.inquiries.post);
};
Мой взгляд Keystone 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.
Что я делаю неправильно?