Amazon s3 バケットに多数のディープ ズーム画像が保存されており、それらを Open Seadragon dzi ビューアで表示する Web ページがあります。画像を表示できますが、ダウンロードできません。汚染されたキャンバスがあるというセキュリティ エラーが表示されます。
バケットに CORS 構成を設定します。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
これにより、画像を表示できました (以前は、access-control-allow-origin ヘッダーがなかったため、OpenSeadragon 呼び出しが失敗しました) が、キャンバスはまだ汚染されています。
seadragon ビューアで crossOrigin ポリシーを設定してみました:
var viewer = OpenSeadragon({
crossOrigin: "Anonymous",
id: "databaseviewer",
prefixUrl: "../../Scripts/openseadragon/images/",
tileSources: url,
maxZoomLevel: 20
});
しかし、それは何も変わりませんでした。これは私の完全なスクリプトです:
var url = '@Model.ImageUrl';
var viewer = OpenSeadragon({
crossOrigin: "Anonymous",
id: "databaseviewer",
prefixUrl: "../../Scripts/openseadragon/images/",
tileSources: url,
maxZoomLevel: 20
});
viewer.addHandler('open', function() {
var downloadlink = document.getElementById("download");
$(downloadlink).on("click", function() {
var img = viewer.drawer.canvas.toDataURL("image/png");
downloadlink.href = img;
downloadlink.download = '@Model.DatabaseName';
});
});