Вызовы API заблокированы CORS даже с Access-Control-Allow-Origin: * присутствует в заголовках

Вызовы 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 можно легко интегрировать с другими библиотеками и фреймворками.


2 315
1

Ответ:

Решено

Ваш клиентский запрос (в зависимости от того, что содержится в запросе) инициировал предварительную проверку между источниками. Это означает, что браузер отправит вашему клиенту запрос 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);
});

Это можно настроить, чтобы разрешить только некоторые источники, если вы хотите, чтобы они были частично заблокированы. Этот пример позволит всем источникам осуществлять доступ к другим источникам из браузера.