聚搜云是上海聚搜信息技术有限公司旗下品牌,坐落于魔都上海,服务于全球、2019年成为阿里云代理商生态合作伙伴。与阿里云代理商、腾讯云、华为云、西部数码、美橙互联、AWS亚马逊云国际站代理商、聚搜云,长期战略合作的计划!阿里云国际站代理商专业的云服务商!

跨域资源共享CORS(Cross-Origin Resource Sharing)简称跨域访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,确保跨域数据传输的安全性。
跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略,是用于隔离潜在恶意文件的关键安全机制。当A、B两个网站属于不同域时,来自于A网站页面中的JavaScript代码访问B网站时,浏览器会拒绝该访问。
同协议、同域名(或IP)、以及同端口视为同域。两个页面的协议、域名和端口(若指定了端口)相同,则视为同源。下表给出了相对http://www.aliyun.com/org/test.html的同源检测示例:
| URL | 访问是否成功 | 原因 |
|---|---|---|
| http://www.aliyun.com/org/other.html | 是 | 协议、域名、端口相同 |
| http://www.aliyun.com/org/internal/page.html | 是 | 协议、域名、端口相同 |
| https://www.aliyun.com/page.html | 否 | 协议不同(HTTPS) |
| http://www.aliyun.com:22/dir/page.html | 否 | 端口不同(22) |
| http://www.alibabacloud.com/help/other.html | 否 | 域名不同 |
从上表中可以看出,协议、域名或者端口不同的情况下,浏览器会拒绝该来源的访问。如果要允许这些来源的访问,需要设置跨域资源共享规则。
OSS支持根据需求灵活配置CORS规则,实现允许或者拒绝相应的跨域请求。CORS规则仅用来决定是否附加CORS相关的Header,是否拦截跨域请求由浏览器决定。
以下两种情况下需选中返回Vary: Origin以避免本地缓存错乱。
注意 选中返回Vary: Origin后,可能会造成浏览器访问次数或者CDN回源次数增加。
例如实际请求中在标签下发起非CORS请求,在fetch下发起CORS请求。
- <!doctype html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>CORS Test</title>
- </head>
- <body>
- //非CORS请求。
- <img src="https://examplebucket.oss-cn-beijing.aliyuncs.com/exampleobject.txt" alt="">
- <script>
- //CORS请求。
- fetch("https://examplebucket.oss-cn-beijing.aliyuncs.com/exampleobject.txt").then(console.log)
- </script>
- </body>
- </html>
例如实际应用中指定允许的跨域请求来源Origin头为http://www.example.com以及https://www.example.org。
| 参数 | 是否必须 | 说明 |
|---|---|---|
| 来源 | 是 | 指定允许的跨域请求的来源。配置规则如下:
|
| 允许Methods | 是 | 指定允许的跨域请求方法。 |
| 允许Headers | 否 | 指定允许跨域请求的响应头。配置规则如下:
|
| 暴露Headers | 否 | 指定允许用户从应用程序中访问的响应头,例如一个JavaScript的XMLHttpRequest对象。不允许使用星号(*)通配符。 建议暴露的常见Headers如下:
|
| 缓存时间 | 否 | 指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒。 |
| 返回Vary: Origin | 否 | 配置是否返回Vary: Origin Header。 如果实际应用中同时存在CORS和非CORS请求,或者Origin头有多种可能值时,建议选中返回Vary: Origin以避免本地缓存错乱。 注意 选中返回Vary: Origin后,可能会造成浏览器访问次数或者CDN回源次数增加。 |
有关以上配置的各项跨域访问参数的更多信息,请参见PutBucketCors
。