之前使用的是阿里云的的公测版,昨天开始迁移到正式版,根据提示迁移后要使用云存储功能需要 3.6.5 版本以上,现在更新到最新的 3.6.15 版本。迁移成功后,云存储可以正常上传,但是无法正常使用,会报跨域错误
Access to image at 'https://mp-917a92df-900c-4e77-9276-d84f453106f8.cdn.bspapp.com/cloudstorage/1bddc7be-0c97-42a6-b6de-bfbc63cc0f05.' from origin 'http://192.168.0.101:5173' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
图片是作为地图的标记点使用,地图组件使用 xhr 拉取,因此会受跨域限制。我已经在跨域配置中配置了 192.168.0.101:5173,而且云数据库也可以正常使用,但云存储依然报跨域错误。这是不支持跨域还是怎样,公测版是没有问题的
changlishe (作者)
像地图组件那种,xhr 请求是第三方代码发起的,这种怎么办
2023-03-02 16:43
DCloud_uniCloud_WYQ
回复 changlishe: 上面的请求头只是保证没有客户端缓存,你可以配置好跨域配置后在network面板勾上禁用缓存测试一下跨域是不是能成功
2023-03-02 17:12
changlishe (作者)
回复 DCloud_uniCloud_WYQ: 可以了
2023-03-02 18:00
changlishe (作者)
回复 DCloud_uniCloud_WYQ: 但是会出现一个问题,就是我的图标图片在用户上传后会立即在地图上显示,刚上传的图标在地图渲染时依然会报跨域问题,除非一直把禁用缓存勾上
2023-03-02 18:10
changlishe (作者)
回复 DCloud_uniCloud_WYQ: 测试了一下,大概是这样的,把文件进行上传,然后直接在控制台 fetch() 上传的地址就会报跨域错误。
2023-03-02 18:21
changlishe (作者)
回复 DCloud_uniCloud_WYQ: 应该是上传的文件被缓存了,但是使用公测之前的免费版本不会遇到这样的问题
2023-03-02 18:29
changlishe (作者)
回复 DCloud_uniCloud_WYQ: 大概是这样的,图片上传成功后,会有一个列表显示上传成功的图片,列表使用了 img 标签来显示图片,这个时候就把图片给缓存了,到地图组件使用 xhr 拉取图片时就从缓存中拉取,因此导致跨域错误。公测之前的免费版本不出现问题,可能是使用 img 标签加载图片时,也配上了跨域字段
2023-03-02 18:43
changlishe (作者)
回复 DCloud_uniCloud_WYQ: 现在如果要正常使用,需要让地图组件的加载优先于使用列表加载图片,或者一直勾选禁用缓存,这两种方法都很难做到,第三方组件没有提供何时渲染完标记点的事件,而让用户禁用缓存那更没有可能。最好的方法是让服务器在加载 img 标签的图片时,也配上跨域字段
2023-03-02 18:49
DCloud_uniCloud_WYQ
回复 changlishe: 你在使用xhr加载图片之前有没有通过img标签的方式加载图片,或者有没有调用uni-app的getImageInfo方法?
2023-03-02 20:01