ブラウザゲーム「Snoot」の開発備忘録に、原作 Snood の参考プレイ動画を YouTube 埋め込みで 追加した。ところがローカルで確認すると、プレーヤーが黒画面のまま 「エラー153:動画プレーヤーの設定エラー」 と表示されて再生できない。 本番(GitHub Pages)では問題なく再生されるのに——。この食い違いの正体と対処をまとめる。
何が起きたか
備忘録ページに、標準的な YouTube の埋め込み(iframe)を置いた。 保存した HTML をダブルクリックしてブラウザで開いたところ、動画の領域が黒くなり、 中央に次のエラーが出た。

コード自体に打ち間違いは無く、同じページを 本番サーバー(https)に上げると正常に再生される。 つまり「コードの誤り」ではなく「開き方(環境)」の問題だった。
エラー153 とは
エラー153 は YouTube プレーヤーが返す「動画プレーヤーの設定エラー」。デバッグ情報には embedder.identity.missing.referrer と出る。これがすべてを物語っている。
2025年末から、YouTube は「埋め込み元サイトを HTTP Referer ヘッダで識別できないと 再生を拒否する」 ようになった。埋め込みプレーヤーは、どのサイトに貼られているかを Referer で確認する。Referer が送られてこない(または剥がされている)と、 「埋め込み元の身元が不明(identity missing referrer)」と判断してエラー153 を返す。
なぜローカル(file://)で出たのか
原因はシンプルで、HTML ファイルを file:// で直接開いていた から。
file://のページは オリジンがnullで、外部サイトへRefererを送れない。- そのため、埋め込みの書き方が正しくても YouTube に身元を示せず、必ずエラー153 になる。
つまり、ローカルで file:// 開きしたときの153 は 環境要因であって、ページの不具合ではない。 ローカル確認はファイルのダブルクリックではなく、後述の https な URL(またはローカルの HTTP サーバー)で行うのが正しい。
なぜ本番(GitHub Pages / https)では再生されるのか
本番は https://〜.github.io/ という正式なオリジンから配信される。だからブラウザは Referer: https://〜.github.io/ を YouTube に送れる。YouTube は身元を確認でき、再生が通る。
さらに今回は念のため本番のレスポンスヘッダも確認した。GitHub Pages は Referrer-Policy や Content-Security-Policy といった「Referer を消す/制限するヘッダ」を返していない。 だから Referer が落ちることもなく、安定して再生される。
| 環境 | Referer | 結果 |
|---|---|---|
file://(ダブルクリック) | 送れない(オリジンが null) | エラー153 |
| https(GitHub Pages 等) | 送れる(https のオリジン) | 正常に再生 |
正しい埋め込み方(対処)
サイト(https)に置く前提で、Referer 強化に強い書き方は次のとおり。
<iframe
src="https://www.youtube-nocookie.com/embed/VIDEO_ID"
title="動画タイトル"
loading="lazy"
referrerpolicy="strict-origin-when-cross-origin"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen></iframe>
referrerpolicy="strict-origin-when-cross-origin"を付ける — 外部(YouTube)にもオリジン(スキーム+ホスト)を Referer として送る。これが肝。srcをyoutube-nocookie.com/embed/…に — プライバシー強化ドメイン。153 対策として広く推奨されている。- サイト側で Referer を消すヘッダを設定しない — 例えばサーバーが
Referrer-Policy: same-originやno-referrerを返すと、 外部リンク(=埋め込み)への Referer が剥がれて153 になる (Django のSecurityMiddleware等が既定で付けるケースが知られている)。 必要ならstrict-origin-when-cross-originに変更する。
補足:閲覧者側の広告ブロッカー・プライバシー拡張・ブラウザ設定が Referer を消すと、 正しく作ったサイトでも利用者の環境だけ153 になることがある。その場合はキャッシュ削除や拡張の無効化で改善する。
確認のしかた
file://ではなく https の URL で開く(本番、またはnpx vite preview等のローカル HTTP サーバー経由)。- 本番のレスポンスヘッダに、制限的な
Referrer-Policy/Content-Security-Policyが付いていないか確認する。
まとめ
file://開きでのエラー153 は 環境要因。ページの不具合ではない。- 本番(https)では Referer を送れるため 正常に再生 される。
- 埋め込みは nocookie +
referrerpolicy="strict-origin-when-cross-origin"を基本に。 - サーバー/拡張機能で Referer を消していないか を疑う。
(なお、この記事には実際の YouTube プレーヤーをあえて埋め込んでいない。 この記事自体を file:// で開くと、まさに同じエラー153 が再現して本末転倒になるため、 スクリーンショットとコード例で解説した。)

コメント