阿里云设置跨域规则后调用OSS时仍然报No'Access-Control-Allow-Origin'的错误原因和解决方法

问题描述

为了实现跨域访问,保证跨域数据传输的安全进行,在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设置为ETag和x-oss-request-id,缓存时间设置为0,选中返回Vary: Origin,然后单击确定。关于如何设置跨域规则,请参见设置跨域访问

     以上设置后如果还是不能解决,需要在代理服务器,如:Nginx里设置CSP头:

    参考:https://www.cnblogs.com/hahaha111122222/p/16280296.htm
    add_header Content-Security-Policy "default-src 'self';"; 

posted on   Msea  阅读(325)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示