OSS跨域资源共享(CORS)错误及排除

本文涉及的产品
对象存储 OSS,20GB 3个月
云备份 Cloud Backup,100GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: CORS程序的错误及排除方法

介绍

跨域资源共享(Cross-Origin Resource Sharing, CORS) 。

配置项

CORS配置有以下几项:

  • 来源(AllowedOrigin):允许跨域请求的来源,可以同时指定多个。配置时需带上完整的域信息,例如http://10.100.100.100:8001https://www.aliyun.com。注意, 不要遗漏了协议名http或https ,如果端口不是默认的80,还需要带上端口。如果不能确定的域名,可以打开浏览器的调试功能,查看header中的Origin。域名支持通配符*,每个域名中允许最多使用一个*,例如https://*.aliyun.com。如果来源指定为*,则表示允许所有来源的跨域请求。
  • Method:按照需求开通对应的方法即可,调试时可以全部选择。
  • Allow Header:允许的跨域请求header。允许配置多条匹配规则,以回车间隔。在Access-Control-Request-Headers中指定的每个header,都必须在Allowed Header中有对应项。Header容易遗漏,没有特殊需求的情况下,建议设置为*,表示允许所有。大小写不敏感。
  • Expose Header:暴露给浏览器的header列表,即用户从应用程序中访问的响应头(例如一个Javascript的XMLHttpRequest对象)。不允许使用通配符。具体的配置需要根据应用的需求确定,只暴露需要使用的header。如果不需要暴露可以不填。大小写不敏感。该项是可选配置项。
  • 缓存时间(MaxAgeSeconds):浏览器对特定资源的预取请求(OPTIONS请求)返回结果的缓存时间,单位为秒。如果没有特殊情况可以稍大一点,比如60秒。该项是可选配置项。

CORS的配置方法一般是针对每个访问来源单独配置规则,不将多个来源混到一个规则,多个规则之间不要有覆盖冲突。其它的选项只开放需要的权限即可。

错误排除

报错

CORS配置错误会报如下错误:

  • 浏览器报类似如下错误:
OPTIONS http://bucket.oss-cn-beijing.aliyuncs.com/
XMLHttpRequest cannot load http://bucket.oss-cn-beijing.aliyuncs.com/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '{yourwebsiet}' is therefore not allowed access. The response had HTTP status code 403.
  • OSS报如下错误:
<Code>AccessForbidden</Code>
<Message>CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec.</Message>

提示:

  • CORS报错一般是站点类应用导致,浏览器中可以查看请求详情。如Chrome,按 F12 打开 开发者工具 ,在 Network 中查看相应元素;
  • OSS返回的错误可以通过抓包获取。如使用Wireshark,筛选器可以指定为 host bucket-name.oss-cn-beijing.aliyuncs.com

其它错误请参看 常见错误及排除

排错

CORS可能错误如下:

  • 来源(AllowedOrigin)配置不正确;
  • Method(AllowedMethod)配置错误;
  • Allow Header配置错误;
  • Expose Header配置错误。

调试方法:

  • 来源(AllowedOrigin)设置成*,确认该配置项无误。如果成*后可以成功上传,说明是来源(AllowedOrigin)配置错误,请根据规则认真检查;
  • Method(AllowedMethod) 全部选择(GET、PUT、DELETE、POST、HEAD) ,确认该配置项目无误;
  • Allow Header配置成*,确认该配置无误;
  • Expose Header设置为指定值或者不填,确认该项配置无误。

提示:

  • 在控制台的对象存储OSS -> Bucket -> Bucket属性 -> 跨域设置 配置上述选项。
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
安全 Java 应用服务中间件
SpringBoot:CORS是什么?SpringBoot如何解决跨域问题?
CORS是Web开发中常见且重要的机制,SpringBoot通过提供注解、全局配置和过滤器等多种方式来解决跨域问题。选择适合的方式可以帮助开发者轻松处理跨域请求,提高应用的灵活性和安全性。
90 2
|
2月前
|
安全
CORS 跨域资源共享的实现原理是什么?
CORS 跨域资源共享的实现原理是什么?
|
2月前
|
开发框架 中间件 Java
如何处理跨域资源共享(CORS)的 OPTIONS 请求?
处理 CORS 的 OPTIONS 请求的关键是正确设置响应头,以告知浏览器是否允许跨域请求以及允许的具体条件。根据所使用的服务器端技术和框架,可以选择相应的方法来实现对 OPTIONS 请求的处理,从而确保跨域资源共享的正常进行。
|
2月前
|
JavaScript 前端开发 API
跨域资源共享(CORS)的工作原理是什么?
跨域资源共享(CORS)通过浏览器和服务器之间的这种交互机制,在保证安全性的前提下,实现了跨域资源的访问,使得不同源的网页能够合法地获取和共享服务器端的资源,为现代Web应用的开发提供了更大的灵活性和扩展性。
|
2月前
|
安全
CORS 跨域资源共享的实现原理
CORS 跨域资源共享的实现原理
|
移动开发 Java 对象存储
OSS 跨域配置
经常遇到有跨域的问题,老生长谈,却又屡禁不止,谈到跨域我们就了解下它是什么?(以下数据均为模拟数据,屏蔽了真实用户数据)
8232 0
OSS  跨域配置
|
缓存 Java 开发工具
OSS 跨域配置
经常遇到有跨域的问题,老生长谈,却又屡禁不止,谈到跨域我们就了解下它是什么?(以下数据均为模拟数据,屏蔽了真实用户数据)
OSS 跨域配置
|
6月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
5月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决

相关产品

  • 对象存储