Вызовы API с реагирующего сайта продолжают блокироваться CORS, даже если и реагирующее приложение, и API обслуживаются с заголовком Access-Control-Allow-Origin : *
вместе с разрешенными методами 'GET,PUT,POST,DELETE,OPTIONS'
, а также разрешены учетные данные cors.
Это точная ошибка:
Access to XMLHttpRequest at 'https://cbiapi.dailycode.tk/parse/classes/_Installation' from origin 'https://backoffice.dailycode.tk' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
URL сайта: https://backoffice.dailycode.tk/login URL-адрес API: https://cbiapi.dailycode.tk/parse
Я не понимаю, почему мои вызовы API все еще заблокированы, я пробовал везде плагин CORS и другие подобные плагины, но вызовы все еще блокируются
🤔 А знаете ли вы, что...
С ExpressJS можно легко интегрировать с другими библиотеками и фреймворками.
Ваш клиентский запрос (в зависимости от того, что содержится в запросе) инициировал предварительную проверку между источниками. Это означает, что браузер отправит вашему клиенту запрос OPTIONS (на тот же URL-адрес запроса) и ожидает возврата статуса 2xx, чтобы разрешить запрос CORS.
Любое количество вещей может вызвать предварительный запрос. К ним относятся большинство настраиваемых заголовков и множество типов контента, кроме пары.
Вы можете увидеть больше в этом другом ответе и вы можете прочитать об этом на MDN здесь.
Ваш сервер API должен будет обработать запрос OPTIONS. Вы не показываете какой-либо соответствующий код сервера API, но если URL-адрес — https://cbiapi.dailycode.tk/parse
, а серверная среда — Express, вам понадобится что-то вроде этого на вашем сервере API:
app.options("/parse", cors(), (req, res) => {
res.sendStatus(204);
});
Это можно настроить, чтобы разрешить только некоторые источники, если вы хотите, чтобы они были частично заблокированы. Этот пример позволит всем источникам осуществлять доступ к другим источникам из браузера.