跨域访问
跨域资源共享机制,简称为跨域访问,允许Web应用服务器进行跨域访问控制,从而使跨域数据传递运输得以安全进行。CORS需要浏览器和服务器同时支持。
整个CORS通信过程,都是浏览器自动完成的,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息, 有时还会多出一次附加的请求,但用户无法感知。
因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,即可跨源通信。
CORS主要使用场景
用户在使用浏览器的情况下会使用到CORS,因为控制访问权限是浏览器而非服务器。因此使用其他客户端的时候无需关心任何跨域问题。
CORS主要是实现在浏览器使用AJAX直接访问COS的数据或上传、下载数据,而无需通过用户本身的应用服务器中转。对于同时使用COS和使用AJAX技术的网站,建议使用CORS来实现与COS的直接通信。
COS对CORS的支持
COS支持对CORS规则的配置,从而根据需求允许或者拒绝响应的跨域请求,该CORS规则配置属于存储桶级别。
CORS请求的通过与否和COS的身份验证等是完全独立的,即COS的CORS规则仅仅是用来决定是否附加CORS相关的Header的一个规则。是否拦截该请求完全由浏览器决定。
目前COS所有的Object相关接口都提供了CORS相关的验证,另外Multipart相关的接口目前也已经完全支持CORS验证。
设置CORS
确定访问不成功的原因之后,可以通过设置存储桶相关的CORS来解决问题。COS控制台可以进行CORS设置,本示例使用控制台来完成CORS的设置。若您的CORS设置不是特别复杂,建议使用控制台来完成CORS的设置。
1、登录COS控制台,单机存储桶列表,进入相关的存储桶,单击安全管理页签,下拉页面即可找到"跨域访问CORS设置"。
2、单击添加规则,添加第一条规则,使用最宽松的配置如下:
验证结果
配置完成后,重新尝试访问test.txt文本文件。结果如下,可以正常访问请求。
故障排除及建议
若想要排除跨域带来的访问问题,可以将CORS设置为以上最宽松的配置,该配置允许所有的跨域请求。该配置下依然出错,则表明错误出现在其他部分而不是CORS。
除了最宽松的配置之外,您还可以配置更精细的控制机制来实现针对性的控制。例如,对于本示例可以使用如下最小的配置匹配成功:
因此对于大部门场景来说,推荐您根据自己的使用场景来使用最小的配置以保证安全性。
注:本文章仅提供自身学习翻阅查找,所有内容均来自对象存储 设置跨域访问-实践教程-文档中心-腾讯云