最近在做一個(gè)播放抖音視頻的網(wǎng)頁(yè)中遇到一個(gè)問(wèn)題,抖音視頻的url直接在瀏覽器中打開是沒有問(wèn)題的,直接打開本地的.html文件也是可以正常播放視頻的,但訪問(wèn)服務(wù)器上的請(qǐng)求過(guò)來(lái)的頁(yè)面就無(wú)法播放視頻,瀏覽器里按F12查看network發(fā)現(xiàn)video標(biāo)簽里的src請(qǐng)求視頻資源時(shí)報(bào)403 Forbiddn 錯(cuò)誤。

直接訪問(wèn)鏈接的請(qǐng)求頭:

正確的請(qǐng)求頭
出錯(cuò)的請(qǐng)求頭:

錯(cuò)誤的請(qǐng)求頭
經(jīng)過(guò)對(duì)比發(fā)現(xiàn)錯(cuò)誤的請(qǐng)求頭中多了個(gè)Referer字段,
估計(jì)請(qǐng)求的是服務(wù)器 referer 做了判斷,不是正常的referer就拒絕了,可以模擬他們的 referer 請(qǐng)求試下,測(cè)試發(fā)現(xiàn), 通過(guò) https 站點(diǎn)打開的頁(yè)面, 可以正常打開視頻鏈接,在 https 下, 發(fā)送的請(qǐng)求是不會(huì)帶有 Referer 的header 的, 這個(gè)時(shí)候是可以正常加載視頻的. 所以, 我們?cè)?頁(yè)面的 head 標(biāo)簽內(nèi), 增加一行代碼,指定瀏覽器任何情況下都不發(fā)送Referer,這樣就可以正常加載資源了。
<meta name="referrer" content="no-referrer">
祭奠我失去的幾個(gè)小時(shí),就為了這么一行代碼。。