Включить CORS в API выборки

Я получаю следующее сообщение об ошибке, которое не позволяет мне продолжить

Failed to load https://site/data.json: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. localhost/:1 Uncaught (in promise) TypeError: Failed to fetch

Я пытаюсь включить CORS в своем файле реакции js, но не смог получить ожидаемый результат. Я установил расширение Chrome, и оно работает. Но чтобы использовать это на рабочем сайте, мне нужно включить его в моем коде. Как правильно оформить код для включения CORS.

fetch(URL, {
  mode: 'cors',
  headers: {
    'Access-Control-Allow-Origin':'*'
  }
})
  .then(response => response.json())
  .then(data => {

CORS должен обрабатываться на стороне сервера.

bamtheboozle 25.06.2018 08:57
Access-Control-Allow-Origin должен быть заголовком ответа, запрос клиента - инвалид
joaner 25.06.2018 08:58

Я думаю, что CORS можно включить и на стороне клиента.

johntanquinco 25.06.2018 09:21

хм, поэтому с сообщением об ошибке выше, согласно опубликованной ссылке, кажется, что Access-Control-Allow-Origin должен быть включен из https://site/:, а не в моем http://localhost:8080. Если я понимаю это в простоте.

johntanquinco 25.06.2018 11:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
33
4
137 823
1

Ответы 1

Браузер имеет междоменную безопасность на стороне клиента, которая проверяет, разрешено ли серверу получать данные из вашего домена. Если Access-Control-Allow-Origin недоступен в заголовке ответа, браузер запрещает использовать ответ в вашем коде JavaScript и генерирует исключение на уровне сети. Вам необходимо настроить cors на стороне вашего сервера.

Вы можете получить запрос с помощью mode: 'cors'. В этой ситуации браузер не будет запускать выполнение для кросс-домена, но браузер не будет отвечать в вашей функции javascript.

Таким образом, в обоих случаях вам необходимо настроить cors на вашем сервере или вам нужно использовать собственный прокси-сервер.

Что делать, если я пытаюсь очистить результаты Google? Например, я хочу запросить https://www.google.com у своего клиентского кода и проанализировать результаты. Является ли это возможным? Я получаю ту же ошибку, что и он. Означает ли это, что google.com не разрешает запросы CORS на свою главную страницу поиска? Спасибо.

cbdeveloper 12.03.2019 10:22

Если вы хотите получить любой другой сервер, например google или facebook, и этот сервер не предоставляет доступ, вам может потребоваться сервер для обработки этого. На сервере вы можете получить ответ от Google и отправить обратно клиенту.

Kishan Mundha 12.03.2019 10:25

Думаю, это опечатка, это no-cors, который возвращает непрозрачный ответ, см. stackoverflow.com/a/43268098/6324591

mcjlnrtwcz 11.02.2021 17:17

Другие вопросы по теме