• 首页 > 
  • 使用OSS出现跨域问题的处理方法

使用OSS出现跨域问题的处理方法

KB: 250869

 · 

更新时间:2021-06-07 13:54

问题描述

当您使用OSS出现跨域问题时,可以参考本文内容,定位并解决问题。

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

解决方案

  1. 排除控制台配置问题:
    当您出现跨域问题时,首先将跨域规则权限设置最大,具体配置如下。然后确认问题是否解决。
  2. 若问题未解决,任意登录一台服务器,执行以下命令,查看跨域请求头。
    curl -voa '[$URL1]' -H 'Origin:[$URL2]'
    说明
    • [$URL1]为需要请求的OSS资源链接。
    • [$URL2]为您配置跨域规则的来源地址。
    系统显示类似如下。

    • 如果出现返回结果存在一个跨域头且符合您配置的跨域头,那么出现跨域问题,可能是由于缓存问题导致,请参考以下解决方法:
      您第一次请求没有触发跨域,返回的数据被本地缓存,而第二次触发跨域的请求没有请求服务器端,而是直接获取本地的缓存,导致跨域校验失败。
      • 在浏览器页面单击Ctrl+F5,清理浏览器缓存,然后在测试跨域问题是否还存在。
      • 您将该OSS资源跨域配置的缓存时间设置为0,这样可避免该资源在客户端进行缓存,每次请求都会重新在服务器端获取鉴权信息。
      • 使用CDN加速OSS,详情请参见CDN如何通过HTTP头配置跨域资源共享(CORS),这样CDN所有请求都会返回CORS头。
    • 如果出现返回结果存在两个跨域头或者不符合您在OSS配置的跨域头,那么出现跨域问题,可能是由于使用了CDN加速OSS:
      1. 登录CDN控制台,临时取消CDN加速OSS,确认跨域问题不存在。
      2. 确认后,单击具体的域名,依次单击缓存配置>自定义HTTP响应头
      3. 根据您的实际情况,设定自定义HTTP响应头,详情请参见CDN如何通过HTTP头配置跨域资源共享(CORS)

相关文档

若跨域问题没有解决,请参见以下文档处理:

适用于

  • 对象存储OSS