openlayers wms 和 canvas toDataURL的跨域问题

项目有个需求要把openlayers的地图转成base64用来导出,本来以为可以和echarts一样,用canvas的toDataURL就简单解决了,结果给我报了这个错误:

Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

原来是跨域了,而echarts生成的canvas不存在跨域的图片当然可以用toDataURL。网上查到的解决方法是添加crossOrigin:

new ol.source.TileWMS({
   crossOrigin: 'anonymous'
   //...
})

这里的crossOrigin有两种值可配置,anonymous和use-credentials,只要crossOrigin的属性值不是use-credentials,全部都会解析为anonymous,所以有的地方会写成crossOrigin: ''。

满心欢喜的以为解决了,结果页面又报了这个错:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

意思就是响应头里没有Access-Control-Allow-Origin这个参数,那为啥openlayers官网的例子可以导出呢?看了下官网瓦片图的响应头,还真的有下面的参数:

access-control-allow-origin: *

还是让后台帮忙改下geoServer配置吧。



猜你喜欢

转载自blog.csdn.net/shengandshu/article/details/80576428