Загрузка...

Обход CORS policy js

Тема в разделе Frontend создана пользователем b001 7 ноя 2023. 492 просмотра

  1. b001
    b001 Автор темы 7 ноя 2023 Заблокирован(а) 4 23 июл 2023
    как обойти ошибку:
    Код
    Access to fetch at '...' from origin '...' 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. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
    и сделать запрос со страницы другого домена?
    если использовать что то типа ****** то айпи поменяется, а мне важно чтобы он остался как есть и именно со страницы был запрос js кодом
     
  2. ChatGPT
    ChatGPT 7 ноя 2023 2253 14 мар 2023
    b001, ошибка, которую вы видите, связана с политикой CORS (Cross-Origin Resource Sharing). Она возникает, когда вы пытаетесь выполнить запрос с одного домена на другой домен, и сервер не разрешает доступ к ресурсу из-за ограничений безопасности.

    Есть несколько способов обойти эту ошибку и выполнить запрос со страницы другого домена:

    1. Использование ******-сервера: Вы можете настроить ******-сервер на своем домене, который будет перенаправлять запросы на целевой домен. Таким образом, запрос будет отправляться с вашего домена, и сервер не будет блокировать его из-за политики CORS. Однако, как вы уже упомянули, это может изменить IP-адрес запроса.

    2. JSONP (JSON with Padding): Если сервер поддерживает JSONP, вы можете использовать этот метод для выполнения запроса. JSONP позволяет получать данные с другого домена, обертывая ответ в функцию обратного вызова. Однако, этот метод имеет свои ограничения и требует поддержки сервера.

    3. CORS Proxy: Вы можете использовать готовые CORS-******, которые позволяют отправлять запросы с вашего домена на другой домен. Эти ****** добавляют заголовки CORS к запросам, чтобы обойти ограничения безопасности. Одним из таких ****** является "cors-anywhere". Вы можете использовать его, добавив префикс "https://cors-anywhere.herokuapp.com/" к URL вашего запроса. Например:
    JavaScript

    fetch('https://cors-anywhere.herokuapp.com/https://example.com/api/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.log(error));
    Обратите внимание, что использование готовых ****** может быть небезопасным, поэтому будьте осторожны и проверяйте надежность ******-сервера.

    Надеюсь, это поможет вам обойти ошибку CORS и выполнить запрос со страницы другого домена. Если у вас возникнут дополнительные вопросы, пожалуйста, дайте мне знать.
     
    1. b001 Автор темы
    2. ChatGPT
      b001, понимаю вашу проблему. Если вам нужно сохранить свой IP-адрес при выполнении запроса через ******, то вам потребуется настроить ******-сервер таким образом, чтобы он передавал ваш IP-адрес в заголовке запроса.

      Вот пример кода на Node.js, который позволяет создать ******-сервер и передавать IP-адрес в заголовке запроса:

      JavaScript

      const http = require('http');

      const proxy = http.createServer((req, res) => {
      const options = {
      hostname: 'example.com', // Замените на целевой домен
      port: 80, // Замените на порт целевого домена
      path: req.url,
      method: req.method,
      headers: {
      'X-Forwarded-For': req.connection.remoteAddress // Передача IP-адреса в заголовке
      }
      };

      const proxyReq = http.request(options, (proxyRes) => {
      res.writeHead(proxyRes.statusCode, proxyRes.headers);
      proxyRes.pipe(res);
      });

      req.pipe(proxyReq);
      });

      proxy.listen(3000); // Замените на порт, на котором будет работать ******-сервер
      Вы можете запустить этот код на своем сервере, заменив `'example.com'` на целевой домен и `3000` на порт, на котором будет работать ******-сервер.

      После запуска ******-сервера, вы можете отправлять запросы на ******-сервер с вашего домена, и он будет передавать IP-адрес в заголовке `X-Forwarded-For` при выполнении запроса на целевой домен. Таким образом, целевой сервер будет видеть ваш IP-адрес, а не IP-адрес ******-сервера.

      Надеюсь, это поможет вам сохранить ваш IP-адрес при выполнении запроса через ******. Если у вас возникнут дополнительные вопросы, пожалуйста, дайте мне знать.
    3. b001 Автор темы
Загрузка...
Top