js跨域下载
跨域文件下載
同源下載(非跨域)
通過a標簽下載
這個方法有缺陷,如果跨域資源,那么download屬性將會失效,默認還是會打開新的瀏覽器標簽頁。
const a = document.createElement('a'); a.setAttribute('href',row.url); //設置下載文件的url地址 a.setAttribute('download' ,row.name );//用于設置下載文件的文件名 a.click();跨域下載(需要服務器配置允許跨域)
遇到跨域資源可以通過XMLHttpRequest發起跨域請求,然后通過跨域請求回來的文件生成同源的url,然后再通過同源的url將文件保存到本地。
這個方法可以避免a標簽download屬性失效,從而打開新的的瀏覽器標簽頁。但是該方法還是需要服務器端設置為允許跨域請求才能成功。
var x=new XMLHttpRequest(); //禁止瀏覽器緩存;否則會報跨域的錯誤 x.open("GET", row.url, true); x.responseType = 'blob'; x.onload=function(e){var url = window.URL.createObjectURL(x.response) //生成同源urlvar a = document.createElement('a');a.href = urla.download = row.namea.click()} x.send();總結