本文主要是介绍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配置吧。
这篇关于openlayers wms 和 canvas toDataURL的跨域问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!