JQuery восстановить файл ICS как текст - PullRequest
0 голосов
/ 21 февраля 2020

Совершенно новый для JQuery и JS, так что простите мою некомпетентность

Я пытаюсь получить текст файла ICS (например, BEGIN:CALENDAR....) через JavaScript.

У меня есть файл базы c HTML:

<html>
  <body>
    <button id="btn">Send</button>
    <script src="jquery.js"></script>
    <script src="ical.min.js"></script>
    <script src="main.js"></script>
  </body>
</html>

И мой main.js:

$(function(){
    $('#btn').click(function(){
        $.get("http://www.instantcal.com/test.ics", function (data) { console.log(data);});
    });
});

(я проверяю свой код, открывая локальный HTML файл в моем браузере, например file:///C:/.../index.html и нажатие кнопки)

Когда я нажимаю кнопку, я получаю сообщение об ошибке:

Доступ к XMLHttpRequest по адресу http://www.instantcal.com/test.ics 'from origin' null 'был заблокирован политикой CORS: на запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '.

Как решить это?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

После долгих поисков я наткнулся на эту информацию: https://gist.github.com/jesperorb/6ca596217c8dfba237744966c2b5ab1e, в которой предлагалось решение использовать прокси-сервер CORS.

Итак, в конечном итоге мне удалось подготовить мой ссылка с прокси:

const corsProxy = "https://cors-anywhere.herokuapp.com/";
$(function(){
    $('#btn').click(function(){
        $.get(corsProxy + "http://www.instantcal.com/test.ics", function (data) { console.log(data); });
    });
});
0 голосов
/ 21 февраля 2020

CORS является отраслевым стандартом для доступа к веб-ресурсам в разных доменах. Это очень важная концепция безопасности, реализованная веб-браузерами, для предотвращения выполнения кодами Javascript или CSS запросов от другого источника.

рассмотрите этот сценарий:

У вас есть ссылка из Домена1, которая открывается в браузере и запрашивает файл JavaScript из Домена 2.

Теперь ваш веб-браузер выполняет вызов Домена 2.

Если в Домене 2 у вас есть политика если принять запрос типа JavaScript или CSS только от Domain2 и игнорировать все запросы от других доменов, то запрос вашего браузера Domain1 не будет выполнен с ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...