开发者社区> 问答> 正文

OSS跨域访问问题

OSS设置浏览器跨域访问时无效
这是我设置的规则,但是没有效果,请帮忙看一下。谢谢。

展开
收起
235835837351847659 2018-10-24 16:04:05 921 0
1 条回答
写回答
取消 提交回答
  • 阿里云ping https://ping.gaomeluo.com/aliyun/
    跨域资源共享的实现  
     
     
    跨域资源共享(Cross-Origin Resource Sharing),简称CORS,是HTML5提供的标准跨域解决方案,OSS支持CORS标准来实现跨域访问。具体的CORS规则可以参考 W3C CORS规范 。其实现如下:
    1. CORS通过HTTP请求中附带Origin的Header来表明自己来源域,比如上面那个例子,Origin的Header就是 www.a.com
    2. 服务端接收到这个请求之后,会根据一定的规则判断是否允许该来源域的请求。如果允许的话,服务器在返回的响应中会附带上Access-Control-Allow-Origin这个Header,内容为 www.a.com来表示允许该次跨域访问。如果服务器允许所有的跨域请求,将Access-Control-Allow-Origin的Header设置为*即可,
    3. 浏览器根据是否返回了对应的Header来决定该跨域请求是否成功,如果没有附加对应的Header,浏览器将会拦截该请求。如果是非简单请求,浏览器会先发送一个OPTIONS请求来获取服务器的CORS配置,如果服务器不支持接下来的 操作,浏览器也会拦截接下来的请求。
     
    OSS提供了CORS规则的 配置 从而根据需求允许或者拒绝相应的跨域请求。该规则是配置在Bucket级别的。详情可以参考 PutBucketCORS  
    这里有几个要点:
    • CORS相关的Header附加等都是浏览器自动完成的,用户不需要有任何额外的操作。CORS操作也只在浏览器环境下有意义。
    • CORS请求的通过与否和OSS的身份验证是完全独立的,即OSS的CORS规则仅仅是用来决定是否附加CORS相关的Header的一个规则。是否拦截该请求完全由浏览器决定。
    • 使用跨域请求的时候需要关注浏览器是否开启了Cache功能。当运行在同一个浏览器上分别来源于 www.a.comwww.b.com的两个页面都同时请求同一个跨域资源的时候,如果 www.a.com的请求先到达服务器,服务器将资源带上Access-Control-Allow-Origin的Header为 www.a.com返回给用户。这个时候 www.b.com又发起了请求,浏览器会将Cache的上一次请求返回给用户,此时Header的内容和CORS的要求不匹配,就会导致后面的请求失败。

    望采纳,谢谢🙏
    2018-10-24 16:12:03
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载