场景:
-
后端上传文件至阿里云OSS,返回得到一个URL。
-
前端用这个URL下载文件,ajax请求异常:No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
-
使用html
<a>
标签直接可以下载
分析原因:
-
js和ajax什么的是看不见的易出错的,需要安全保护,用
<a>
标签是申请主动请求另外一个域名,浏览器就没有那个策略。 -
另外其实阿里云OSS也是可以配置的,有个管理页面专门可以配置跨域规则。
解决方案:
-
前端直接使用
<a>
标签,简单有效 -
去阿里云OSS后台管理界面设置跨域规则。(估计最终就是OSS后端接口会加上
response.setHeader("Access-Control-Allow-Origin", "配置的域名");
) -
当然还一些比较丑陋的方案:JSONP之类的等等,上网一搜一大堆。
原文:https://www.cnblogs.com/dennyzhangdd/p/9042536.html