Чтобы разрешить перенаправление с другого сервера в JavaScript, следует использовать XMLHttpRequest или fetch API для совершения AJAX-запроса к этому серверу.
1. Используя XMLHttpRequest:
var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://другой_сервер.com/путь_к_ресурсу', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { console.log(xhr.responseText); } }; xhr.send();
В приведенном коде мы создаем новый экземпляр объекта XMLHttpRequest с вызовом new XMLHttpRequest()
. Затем мы вызываем метод open()
для задания метода запроса (в данном случае GET) и URL-адреса сервера, с которого мы хотим получить данные. Флаг true
в конце указывает, что запрос должен быть асинхронным.
Затем мы устанавливаем обработчик события onreadystatechange
, который будет вызываться каждый раз, когда состояние запроса изменяется. Внутри обработчика мы проверяем, достигло ли состояние 4
(завершено) и статус ответа 200
(успешное выполнение запроса), а затем выводим содержимое ответа в консоль с помощью console.log()
.
Наконец, мы вызываем метод send()
для отправки запроса.
2. Используя fetch API:
fetch('http://другой_сервер.com/путь_к_ресурсу') .then(function(response) { return response.text(); }) .then(function(data) { console.log(data); }) .catch(function(error) { console.log(error); });
В этом примере мы используем глобальный метод fetch()
, который возвращает Promise-объект. Мы передаем URL-адрес сервера в качестве аргумента для выполнения GET-запроса.
Затем мы вызываем метод .then()
, чтобы обработать ответ сервера в формате response
и извлечь данные как текст с помощью метода .text()
. После этого мы можем обработать данные в следующем .then()
блоке и вывести их в консоль.
Как и ранее, мы также добавляем .catch()
, чтобы обработать возможные ошибки при выполнении запроса.
Эти два примера позволяют выполнить GET-запрос к другому серверу и получить данные оттуда. Помните, что из-за политики одного источника (Same-Origin Policy) веб-браузеры могут блокировать запросы к другим серверам, если не настроены соответствующие заголовки на стороне сервера.