OpenSeadragon Cross Domain Ajax-запрос
TL;DR: Как я могу сделать междоменный AJAX-запрос с OpenSeadragon?
Я использую OpenSeadragon для отображения изображений с веб-сайта. У меня программа просмотра Seadragon работает с тестовым URL следующим образом:
<script src="../../Scripts/openseadragon/openseadragon.js"></script>
<script>
var viewer = OpenSeadragon({
id: "openseadragon1",
prefixUrl: "../../Scripts/openseadragon/images/",
tileSources: "https://familysearch.org/dz/v1/TH-1971-27860-10353-27/image.xml?ctx=CrxCtxPublicAccess&session" // requires a DZI tile source
});
</script>
<div id="container2" style="float:left;">
<div id ="openseadragon1" style="width:500px;height:500px;border:1px solid black;float:left;"></div>
</div>
так что я знаю, что мой зритель работает. Моя проблема в том, что нужные мне изображения размещаются на сайте, у которого нет заголовка "Access-Control-Allow-Origin", поэтому мой Ajax-запрос блокируется. Например, когда я использую этот URL:
http://66.img.americanancestors.org/e41de95d-6235-4581-b823-4887b50eb8ad.xml
(к которому я могу получить доступ в своем браузере, когда я набираю его, он загружает файл XML), я получаю ошибку "Нет доступа-Контроль-Origin-Header" и эту ошибку в моем средстве просмотра:
Я знаю о кросс-доменных запросах, но будучи новичком в OpenSeadragon, я не уверен, как создать междоменный запрос в моей функции OpenSeadragon. Я знаю, что OpenSeadragon имеет функцию CreateAJAXRequest(), но я не совсем понимаю, как это реализовать, и я не уверен, решит ли это мою проблему.
2 ответа
Ваш браузер правильно отказывается загружать данные из междоменного источника, для которого не установлено "Access-Control-Allow-Origin". Три возможных решения:
- Сделайте копию XML и разместите ее на своем сайте.
- Сделайте запрос на ваш собственный сайт, который действует как прокси и извлекает удаленный XML-файл
- Пожалуйста, попросите владельца сайта настроить заголовки CORS для вас