【问题标题】:OpenSeadragon Cross Domain Ajax requestOpenSeadragon 跨域 Ajax 请求
【发布时间】:2014-08-13 16:03:19
【问题描述】:

TL;DR:如何使用 OpenSeadragon 发出跨域 AJAX 请求?

我正在使用 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 文件),我在查看器中收到“No Access-Control-Origin-Header”错误和此错误:

我知道跨域请求,但是作为 OpenSeadragon 的新手,我不确定如何在我的 OpenSeadragon 函数中创建跨域请求。我知道 OpenSeadragon 有一个 CreateAJAXRequest() 函数,但我不太明白如何实现它,我不确定这是否能解决我的问题。

【问题讨论】:

    标签: javascript html ajax seadragon openseadragon


    【解决方案1】:

    您的浏览器正确地拒绝从未设置“Access-Control-Allow-Origin”的跨域源加载数据。三种可能的解决方案:

    • 复制 xml 并将其托管在您自己的网站上
    • 向您自己的站点发出请求,该站点充当代理并获取远程 xml 文件
    • 请网站所有者为您设置 CORS 标头

    【讨论】:

    • 我做了一个代理,它成功地返回了我需要的 XML,但是当我传入 XML 时,我的 Seadragon 查看器无法加载图块。我尝试了 OpenSeadragon() 和 Seadragon.Viewer.openDzi() 但都不起作用; OpenSeadragon 打开查看器但加载磁贴失败,Seadragon.Viewer.openDzi 加载 400 错误。
    • 我在这里添加了一些信息:github.com/openseadragon/openseadragon/issues/…
    【解决方案2】:
      tileSources: url,
      ajaxWithCredentials : true,
    

    【讨论】:

    • 您能否在您的答案中添加一些词,解释使用什么以及为什么使用?
    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多