能觸發瀏覽器下載的url有兩類:segmentfault
response header中指定了Content-Disposition爲attachment,它表示讓瀏覽器把響應體做爲附件下載到本地 (通常Content-Disposition還會指定filename, 下載的文件默認就是filename指定的名字)瀏覽器
response header中指定了Content-Type 爲 application/octet-stream(無類型) 或者 application/zip(下載zip包時)以及其它幾個不常見類型 (其中還有瀏覽器差別),其中 application/octet-stream表示http response爲二進制流(沒指定明確的type), 須要下載到本地, 由系統決定或者用戶手動指定打開方式。app
在這種前提下,只須要瀏覽器請求了這個地址,都會自動下載,具體的方式以下:學習
一、iframe 加載請求此地址時會自動下載 //聽說兼容先較好,推薦,使用的時候吧iframe設置爲display;none便可url
<iframe name="hehe" src='下載url'></iframe>spa
二、a 點擊請求此地址時會自動下載code
<a href="下載url">下載</a>orm
H5的download屬性 <a download href="下載url">下載</a> 這時候,若是返回的是img這種瀏覽器能夠打開的文件時,也會下載(不然會直接打開)blog
三、form 發起submit請求此地址時會自動下載ip
<form action="下載ur" method="get" > <button type="submit">下載</button> </form>
四、window.location.href 賦值爲此地址時會自動下載 ,若是是其餘地址,會跳轉,但,當是下載的url,瀏覽器會發起請求,下載下來,而且不會改變本頁的 window.location.href
window.location.href = 「下載url」
四、window.open 賦值爲此地址時會自動下載 ,但會先打開新標籤頁再下載再關閉新標籤頁,體驗不佳
window.open = 「下載url」
總之:只要是下載的url,只要讓瀏覽器發起請求,都會實現下載的功能;具體是什麼緣由,有待後期的學習。(我司是汪大神,分分鐘就說出了這個規律,想必必然有基礎理論的支持,也許是HTTP請求、或者後臺知識的)