详情页标题前

阿里云对象存储OSS设置跨域规则后调用OSS时仍然报“No ‘Access-Control-Allow-Origin’”的错误-云淘科技

详情页1

问题描述

为了实现跨域访问,保证跨域数据传输的安全进行,在OSS控制台设置了跨域CORS规则后,通过SDK进行程序调用时报以下错误。

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

问题原因

出现跨域问题的原因如下:

  • 跨域CORS规则设置异常: 未正确设置CORS规则。

  • 浏览器缓存:设置了CORS跨域规则,但是存在浏览器缓存,导致读取了缓存中未含有跨域的Response Header。

解决方案

不同的问题原因对应的解决方法不同,建议先清除浏览器缓存进行测试。如果仍然报错,请参见以下步骤排查CORS跨域规则是否设置正确:

  1. 登录OSS管理控制台。

  2. 单击Bucket列表,然后单击目标Bucket名称。

  3. 在左侧导航栏,选择数据安全>跨域设置

  4. 在跨域设置页面,单击创建规则

  5. 创建跨域规则面板,将来源设置为*允许Methods全部勾选,允许Headers设置为*暴露Headers设置为ETagx-oss-request-id缓存时间设置为0,选中返回Vary: Origin,然后单击确定。关于如何设置跨域规则,请参见设置跨域访问。

    说明

    选中
    返回Vary: Origin以避免本地缓存错乱,可能会造成浏览器访问次数或者CDN回源次数增加。

    阿里云对象存储OSS设置跨域规则后调用OSS时仍然报“No 'Access-Control-Allow-Origin'”的错误-云淘科技

  6. 若问题仍然未解决,请任意登录一台服务器,执行以下命令,查看跨域请求头。

    curl -voa '[$URL1]' -H 'Origin:[$URL2]'

    说明

    • [$URL1]为需要请求的OSS资源链接。

    • [$URL2]为您配置跨域规则的来源地址。

    系统显示类似如下。

    阿里云对象存储OSS设置跨域规则后调用OSS时仍然报“No 'Access-Control-Allow-Origin'”的错误-云淘科技

    • 如果出现返回结果存在一个跨域头且符合您配置的跨域头,那么出现跨域问题,可能是由于缓存问题导致,请参考以下解决方法: 您第一次请求没有触发跨域,返回的数据被本地缓存,而第二次触发跨域的请求没有请求服务器端,而是直接获取本地的缓存,导致跨域校验失败。

      • 在浏览器页面单击Ctrl+F5,清理浏览器缓存,然后在测试跨域问题是否还存在。

      • 您将该OSS资源跨域配置的缓存时间设置为0,这样可避免该资源在客户端进行缓存,每次请求都会重新在服务器端获取鉴权信息。

        说明

        说明:您可以在上传文件时设置文件的cache-control为no-cache,已经上传的文件可以使用ossutil工具进行更改,如何设置cache-control请参见
        set-meta(管理文件元信息)。

      • 使用CDN加速OSS,这样CDN所有请求都会返回CORS头。

    • 如果出现返回结果存在两个跨域头Respons Headers或者不符合您在OSS配置的跨域头,那么出现跨域问题,可能是由于使用了CDN加速OSS:

      1. 登录CDN控制台,临时取消CDN加速OSS,确认跨域问题不存在。

      2. 确认后,单击具体的域名,依次单击缓存配置>自定义HTTP响应头

      3. 根据您的实际情况,设定自定义HTTP响应头。

  7. 若跨域问题还是没有解决,请参见OSS跨域资源共享(CORS)出现的常见错误及解决方案进一步排查处理。

适用于

  • 对象存储OSS

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/159667.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云ECS云服务器授权RAM用户使用实例RAM角色-云淘科技

    如果您需要通过RAM用户授予、更换、收回实例RAM角色,您需要通过阿里云账号授权RAM用户允许使用实例RAM角色。本文操作仅适用于阿里云账号。 背景信息 当您授权RAM用户使用实例RAM角色时,您必须授权RAM用户对该实例RAM角色的PassRole权限。其中,PassRole决定该RAM用户能否直接执行角色策略赋予的权限。 操作步骤 使用阿里云账号登录RA…

    阿里云服务器 2023年12月9日
  • 阿里云容器服务ACK使用Kubernetes API-云淘科技

    本文将基于cURL命令简单演示如何以REST的方式使用Kubernetes API,方便您使用开发语言原生的HTTPS方式操作Kubernetes集群。演示包括创建和删除Pod,创建和修改Deployment。 获取集群访问凭证KubeConfig 登录容器服务管理控制台。 单击前往RAM进行授权进入云资源访问授权页面,然后单击同意授权。 完成以上授权后,刷…

    阿里云容器服务 2023年12月10日
  • 阿里云对象存储OSS教程示例:基于Bucket Policy实现跨账号访问OSS-云淘科技

    阿里云OSS的资源默认都是私有的,如果您希望您的合作伙伴可以访问您的OSS资源,可以通过Bucket Policy授予合作伙伴访问Bucket的权限。 背景信息 公司A希望其合作公司B可以访问自己的OSS资源,但又不方便开放RAM用户给B公司。此时,A公司可以通过Bucket Policy授予合作伙伴访问Bucket的权限。B公司账号获得授权后,可以在控制台…

    阿里云对象存储 2023年12月10日
  • 阿里云日志服务SLS高德地图-云淘科技

    本文介绍高德地图的操作步骤及案例。 简介 以地图作为背景,通过图形颜色、图像标记的方式展示地理数据信息。日志服务内嵌的高德地图包括点图和热力图。您在查询和分析语句中使用特定的函数后,日志服务将以地图形式展示分析结果。 基本构成如下: 地图画布 色块 操作步骤 登录日志服务控制台。 在Project列表区域,单击目标Project。 在日志存储 > 日志…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSSPython跨域资源共享-云淘科技

    跨域资源共享CORS(Cross-Origin Resource Sharing)简称跨域访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,确保跨域数据传输的安全性。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Reg…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。