changlishe
changlishe
  • 发布:2023-01-05 22:00
  • 更新:2023-04-17 17:28
  • 阅读:656

迁移到阿里云正式版后云存储出现跨域问题

分类:uni-app

之前使用的是阿里云的的公测版,昨天开始迁移到正式版,根据提示迁移后要使用云存储功能需要 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,而且云数据库也可以正常使用,但云存储依然报跨域错误。这是不支持跨域还是怎样,公测版是没有问题的

2023-01-05 22:00 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

xhr请求时请求头设置{"cache-control": "no-cache","pragma": "no-cache"}

  • 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

Zhanzr

Zhanzr

您好,请问解决了吗?

城南

城南

这种事怎么解决的

要回复问题请先登录注册