公開資源下載
公開資源下載非常簡單,以HTTP GET方式訪問資源URL即可。資源URL的構(gòu)成如下:
http://<domain>/<key>
以上的<domain>
有兩種形態(tài):七牛子域名,自定義域名。
七牛子域名是一個(gè)創(chuàng)建空間時(shí)缺省分配的域名,開發(fā)者可以在開發(fā)者平臺(tái) - 空間設(shè)置 - 域名設(shè)置查看該子域名。子域名通常類似于developer.qiniu.com
,用戶可以通過以下URL下載名為flower.jpg的資源:
http://developer.qiniu.com/resource/flower.jpg
開發(fā)者可以申請(qǐng)為某特定空間綁定一個(gè)自定義域名,以通過這個(gè)域名訪問資源,比如綁定了一個(gè)自定義域名i.example.com
,就可以通過以下URL訪問同樣的資源:
http://i.example.com/flower.jpg
私有資源下載
當(dāng)用戶將空間設(shè)置成私有后,所有對(duì)空間內(nèi)資源的訪問都必須獲得授權(quán)。
私有資源下載也是通過以HTTP GET方式訪問一個(gè)特定URL完成。私有資源URL與公開資源URL相比只是增加了兩個(gè)參數(shù)e
和token
,分別表示過期時(shí)間和下載憑證。一個(gè)完整的私有資源URL如下所示:
http://<domain>/<key>?e=<deadline>&token=<downloadToken>
參數(shù)e
表示URL的過期時(shí)間,采用UNIX Epoch時(shí)間戳格式,單位為秒。超時(shí)的訪問將返回401錯(cuò)誤。
如果請(qǐng)求方的時(shí)鐘未校準(zhǔn),可能會(huì)造成有效期驗(yàn)證不正常,比如直接認(rèn)為已過期。因此需要進(jìn)行時(shí)鐘校準(zhǔn)。由于開發(fā)者無法保證客戶端的時(shí)間都校準(zhǔn),所以應(yīng)該在業(yè)務(wù)服務(wù)器上創(chuàng)建時(shí)間戳,并周期性校準(zhǔn)業(yè)務(wù)服務(wù)器時(shí)鐘。
參數(shù)token
攜帶下載憑證。下載憑證是對(duì)資源訪問的授權(quán),不帶下載憑證或下載憑證不合法都會(huì)導(dǎo)致401錯(cuò)誤,表示驗(yàn)證失敗。關(guān)于下載憑證的生成,請(qǐng)參見下載憑證。
防盜鏈
下載還有一種常見的場景,即公開資源的防盜鏈,比如禁止特定來源域名的訪問,禁止非瀏覽器發(fā)起的訪問等。
我們可以通過HTTP協(xié)議支持的Referer機(jī)制(參見HTTP Referer)來進(jìn)行相應(yīng)的來源識(shí)別和管理。
防盜鏈?zhǔn)且粋€(gè)系統(tǒng)設(shè)置,不影響開發(fā)工作。如發(fā)現(xiàn)有盜鏈情況,開發(fā)者可在開發(fā)者平臺(tái)的空間設(shè)置頁面進(jìn)行相應(yīng)的設(shè)置。