Полный календарь с календарем Google, источник 'url' не разрешен Access-Control-Allow-Origin - PullRequest
1 голос
/ 07 марта 2012

В chrome я сталкиваюсь с вышеуказанной ошибкой, которая не позволяет браузеру получать данные календаря из Google. Я проверил URL самостоятельно, и он работает.

Из того, что я смог исследовать, межсайтовый запрос, выполненный с помощью $ .ajax к источнику XML, вызывает ошибку Access-Control-Allow-Origina.

В соответствии с jQuery, http://api.jquery.com/jQuery.ajax crossDomain = true должен работать с некоторыми браузерами, но не в chrome.

Для других ответов в стеке $ .getJSON должен обойти проблему, и мы можем получить ленту в виде json http://googleappsdeveloper.blogspot.com/2010/09/new-json-format-for-google-calendar-api.html с? Alt = jsonc arg.

Прежде чем я углублюсь в код, как я могу заставить это работать?

Ответы [ 2 ]

1 голос
/ 30 июля 2013

У меня была эта проблема.Исправлено после добавления в код <script type='text/javascript' src='fullcalendar-1.6.2/fullcalendar/gcal.js'></script>

0 голосов
/ 07 марта 2012

Вы ответили на свой вопрос.getJSON должен иметь возможность использовать JSONP, который является междоменным запросом, встроенным в блок скрипта, и думать, что

<script src="http://someforeigndomain.com/doc.json"></script>

Что сервер действительно возвращает, это

callback({some: "relevant", json: "object"});

.код, который

function callback(obj) {
   //do something with json.
}

Jquery в этом случае выполняет всю тяжелую работу по привязке обратного вызова к тому, который вы указали в своем конфигурационном объекте getJSON.Но я надеюсь, что это поможет вам понять, что происходит с getJSON при доступе к данным за пределами вашего домена.Это не ДЕЙСТВИТЕЛЬНО ajax.


Точнее, причина, по которой вы испытываете ошибку с ajax, заключается в том, что браузер реализует защиту, аналогичную флэш-памяти, которая запрещает междоменные сценарии в качестве механизма безопасности.Как и в случае с crossdomain.xml, это можно обойти, если вы владеете сервером назначения, внедрив CORS, это означает прослушивание запросов с помощью метода OPTION и отправку обратно заголовков, которые разрешают исходный домен.Это в основном помогает домену бороться с XSS, который в противном случае мог бы вызвать DDOS или СПАМ, при этом позволяя доверенным внешним сайтам взаимодействовать с его веб-сервисами.Надеюсь, это поможет.


Для получения информации о jQuery-части вашего вопроса просто прочитайте $ .getJSON из Jquery Docs, это довольно просто.

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