У меня есть 2 маршрутизатора на моем expressjs сервере. Одним из них является основной, который имеет следующее промежуточное программное обеспечение:
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,x-auth-token');
res.setHeader('Access-Control-Allow-Credentials', true);
res.setHeader('Access-Control-Expose-Headers', 'x-auth-token');
next();
});
Тогда есть такой маршрут: app.use ('/ restaurant', restaurant_router);
И внутри restaurant_router
I have: router.use ('/: restaurant_id / orders', restaurant_order_router);
А внутри restaurant_order_router
у меня есть запрос get.
Что происходит, когда я отправляю запрос GET /restaurants
сначала он отправляет запрос OPTIONS, потому что я отправляю x-auth-token
в заголовках, а затем отправляет запрос GET.
Но когда я пытаюсь использовать те же заголовки и отправлять запрос на дочерний маршрутизатор GET /restaurants/:restaurant_id/order
он завершается с 500 и говорит, что http http отсутствует.
Я посмотрел на проблему и увидел, что если я добавлю app.options('*', (req, res) => res.sendStatus(200));
в root роутер, он начнет работать.
Почему это так? Почему я должен установить эти параметры самостоятельно? Почему он не работает так же, как и с запросом GET /restaurants
?