Обмен ресурсами между источниками (CORS) – это механизм безопасности, реализованный в веб-браузерах, который позволяет запрашивать ограниченные ресурсы (например, шрифты, JavaScript и т. д.) на веб-странице из другого домена, находящегося за пределами домена, из которого принадлежит ресурс. возник. Однако из соображений безопасности веб-браузеры накладывают определенные ограничения на запросы из разных источников. В этой статье мы рассмотрим различные методы обработки CORS в JavaScript, а также приведем примеры кода.
Методы обработки CORS:
-
Конфигурация на стороне сервера:
Сервер можно настроить на включение соответствующих заголовков ответов, чтобы разрешить запросы между источниками. В следующем примере показано, как настроить заголовок «Access-Control-Allow-Origin», чтобы разрешить запросы из определенного домена:// Node.js example using Express.js app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "https://www.example.com"); // Other headers... next(); });
-
JSONP (JSON с дополнением):
JSONP — это метод, позволяющий выполнять запросы между источниками с помощью элемента сценария. Сервер оборачивает ответ в функцию обратного вызова, позволяя выполнить ответ как сценарий. Вот пример использования JSONP:function handleResponse(data) { // Handle the response data } var script = document.createElement("script"); script.src = "https://www.example.com/api?callback=handleResponse"; document.body.appendChild(script);
-
Прокси-сервер:
Прокси-сервер действует как посредник между клиентом и сервером, делая запрос от имени клиента. Клиент отправляет запрос на прокси-сервер, а прокси-сервер перенаправляет запрос на целевой сервер. Ответ целевого сервера затем отправляется обратно клиенту. Таким образом, запрос клиента отображается как запрос того же источника. Вот пример использования прокси-сервера с Node.js:// Node.js example using the 'http-proxy' module const httpProxy = require("http-proxy"); const proxy = httpProxy.createProxyServer({ target: "https://www.example.com" }); proxy.web(req, res);
-
Прокси-службы CORS.
Существуют сторонние службы, которые действуют как прокси-серверы CORS. Эти службы позволяют вам делать запросы из разных источников, отправляя запрос через их серверы. Одним из популярных примеров является CORS Anywhere ( https://cors-anywhere.herokuapp.com ). Вот пример использования CORS Anywhere:var url = "https://www.example.com/api"; var proxyUrl = "https://cors-anywhere.herokuapp.com/" + url; fetch(proxyUrl) .then(function (response) { // Handle the response }) .catch(function (error) { // Handle the error });
В этой статье мы рассмотрели несколько методов обработки CORS в JavaScript. Эти методы включают настройку на стороне сервера, JSONP, прокси-серверы и прокси-службы CORS. В зависимости от вашего конкретного варианта использования вы можете выбрать наиболее подходящий метод для включения совместного использования ресурсов из разных источников в ваших веб-приложениях.