Ошибка при взятии json c сервера

124
18 декабря 2020, 18:20

Пробую забрать json с сервера для дальнейшей манипуляции и получаю ошибку.

Access to XMLHttpRequest at 'http://www.mrsoft.by/data.json' from origin 'http://localhost:1234' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Нагуглил что это проблема с заголовками, пытался их поставлять разными способами не но выходит.

  var requestURL = 'http://www.mrsoft.by/data.json';
  var request = new XMLHttpRequest();
  request.open('GET', requestURL);
  request.responseType = 'json';
  request.send();
  request.onload = function() {
    var obj = request.response;
    console.log(obj);
  }
Answer 1

Браузер запрещает делать XHR запросы на другой домен.

Один вариант: добиться, чтобы при запросе этого файла сервер возвращал заголовок Access-Control-Allow-Origin

Например

Access-Control-Allow-Origin: *

Другой вариант использовать прокси. Есть публичные прокси, например этот https://jsonp.afeld.me/

<script>
  function myCallback(data){
    console.log(data);
  }
</script>
<script src="https://jsonp.afeld.me/?callback=myCallback&url=http://www.mrsoft.by/data.json"></script>

Либо, если есть возможность, написать простой прокси, который будет доступен на вашем домене (localhost), тогда браузер не будет ругаться.

READ ALSO
Каким образом можно через js узнать логин и id пользователя яндекс аккаунта?

Каким образом можно через js узнать логин и id пользователя яндекс аккаунта?

Обнаружил, что если зайти на сайт ПДД и посмотреть в куки, то вы там увидите свой логин и ID яндекс аккаунта, если авторизованы на текущий момент...

105