Youtube iframe 嵌入錯誤: 「無法播放影片 在 YouTube 上觀看」

3 分鐘閱讀 View counter badge

目錄

「無法播放影片 在 YouTube 上觀看」

這個錯誤的英文訊息為「Video unavailable Watch on YouTube」

Youtube iframe嵌入錯誤: 「無法播放影片 在 YouTube 上觀看」

Youtube iframe 嵌入在「某些影片」無法顯示,出現如圖的灰畫面,這些影片的共通點是「原影片有(音樂)版權宣告」。

而且我在 ng serve 的 localhost 開發是正常的,部署到 Azure Static Web Apps 站台後才有問題。

這是我在做 sound-buttons 專案時遇到的問題,卡了我好幾個月無法解決。
我一直以為這些影片就是被設定無法嵌入,直到我發現同一個影片別人的站台可以嵌入...只有我有問題?!

釐清問題

Youtube iframe 大概(?)會檢查 referer 標頭決定要不要理你,請確認以下幾點

解決問題

referer header

我的狀況是缺少了 referer header。

一般來說瀏覧器的 Referrer-Policy 預設為 strict-origin-when-cross-origin,會送出 referer header 才對... 但我的網站「被」配置為了 same-origin
兇手除了 Azure Static Web Apps 站台還能是誰?

那麼解法也很明朗了,在 index.html 加上 meta tag:

<meta name="referrer" content="strict-origin-when-cross-origin" />

國際通用手勢

為什麼我寫「大概(?)」
因為沒有錯誤訊息沒有文件沒有證據啊
叫我通靈王啦

找到證據啦!

參考文件

回覆

你可以使用 Mastodon 或其他 ActivityPub/Fediverse 帳號來公開回覆此文章。現有的公開回覆顯示在下方。

打開文章