場景:
1.后端上傳文件至阿里雲OSS,返回得到一個URL。
2.前端用這個URL下載文件,ajax請求異常:No 'Access-Control-Allow-Origin' header is present on the requested resource.
3.使用html <a> 標簽直接可以下載
分析原因:
1.js和ajax什么的是看不見的易出錯的,需要安全保護,用<a>標簽是申請主動請求另外一個域名,瀏覽器就沒有那個策略。
2.另外其實阿里雲OSS也是可以配置的,有個管理頁面專門可以配置跨域規則。
解決方案:
1.前端直接使用<a>標簽,簡單有效
2.去阿里雲OSS后台管理界面設置跨域規則。(估計最終就是OSS后端接口會加上response.setHeader("Access-Control-Allow-Origin", "配置的域名");
)
3.當然還一些比較丑陋的方案:JSONP之類的等等,上網一搜一大堆。