’ был заблокирован политикой CORS’ Ошибка
Вы веб-разработчик, который столкнулся с неприятной ошибкой «источник « http://локальный хост:4200 » заблокирован политикой CORS»? Не бойтесь: в этой статье мы рассмотрим различные способы решения этой проблемы и обеспечения бесперебойной работы вашего приложения.
Но сначала давайте разберемся, что такое политика CORS. CORS, что означает совместное использование ресурсов между источниками, представляет собой механизм безопасности, реализованный веб-браузерами для ограничения HTTP-запросов из разных источников. Это предотвращает отправку веб-страницей запросов к домену, отличному от того, из которого она была получена, что обеспечивает лучшую безопасность для пользователей.
Теперь давайте углубимся в методы, которые можно использовать, чтобы разблокировать ошибку политики CORS:
-
Внутренний прокси.
Одним из распространенных решений является настройка внутреннего прокси-сервера для пересылки запросов от вашего внешнего интерфейса к внешнему API. Таким образом, запрос выполняется из того же источника, а политика CORS обходит. Вот пример в Node.js с использованием платформы Express:const express = require('express'); const request = require('request'); const app = express(); app.use('/api', (req, res) => { const url = 'https://api.external-domain.com' + req.url; req .pipe(request(url)) .on('error', (err) => res.status(500).send(err)) .pipe(res); }); app.listen(3000, () => { console.log('Proxy server listening on port 3000!'); });В этом примере любой запрос, сделанный к
/apiна вашем локальном сервере, будет перенаправлен наhttps://api.external-domain.com. -
Промежуточное ПО CORS.
Вы можете использовать промежуточное ПО CORS, чтобы включить заголовки CORS на внутреннем сервере. Это позволяет браузеру принимать запросы из разных источников. Вот пример в Node.js с использованием пакетаcors:const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); // ... your routes and handlers app.listen(3000, () => { console.log('Server listening on port 3000!'); });Добавив
app.use(cors()), сервер будет отвечать соответствующими заголовками CORS, позволяя выполнять запросы из разных источников. -
Расширения браузера CORS.
Если вы разрабатываете локально, вы можете установить расширения браузера CORS, чтобы временно отключить ограничения CORS. Эти расширения изменяют политику безопасности браузера и позволяют отправлять запросы из любого источника. Некоторые популярные расширения включают «Разрешить CORS: Access-Control-Allow-Origin» для Chrome и «CORS Everywhere» для Firefox. -
Конфигурация внутреннего сервера.
Если у вас есть контроль над внутренним сервером, вы можете настроить его для включения соответствующих заголовков CORS. Например, в приложении Node.js/Express вы можете вручную установить заголовки с помощью методаres.header():app.get('/api/data', (req, res) => { res.header('Access-Control-Allow-Origin', 'http://localhost:4200'); res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); // ... your code });Указав разрешенный источник, методы и заголовки, вы можете управлять поведением CORS на стороне сервера.
-
Прокси-серверы.
Другой вариант — использовать прокси-сервер, например Nginx, для пересылки запросов от вашего внешнего интерфейса к внешнему API. Прокси-серверы можно настроить на добавление необходимых заголовков CORS и обход политики CORS на стороне клиента.
Это всего лишь несколько способов разблокировать ошибку политики CORS. Выбор метода зависит от вашего конкретного варианта использования и уровня вашего контроля над внутренним сервером. Не забудьте учитывать последствия для безопасности при реализации решений, связанных с CORS.
В заключение, следуя методам, изложенным выше, вы сможете преодолеть ошибку «Исходный код http://локальный хост:4200 заблокирован политикой CORS» и обеспечить бесперебойную связь между вашим интерфейсом и сервером.. Приятного кодирования!
’был заблокирован политикой CORS’ Ошибка: методы и решения