YouTubeの埋め込み動画で発生する「Error 153: Video Player Configuration Error」は、最近のYouTube側のポリシー変更により、HTTP Referrer(参照元情報)が提供されないリクエストをブロックするようになったことが主な原因です。特に、WebViewやローカル環境、特定のブラウザ設定で起こりやすくなっています。ご提供のHTMLコードでは、src属性のドメインが「youtube.com」になっており、これを「www.youtube.com」に修正するだけでも改善する可能性がありますが、以下に具体的な対処方法をまとめます。
1. iframeのsrcをプライバシー強化版に変更
YouTubeのプライバシー強化ドメインを使用すると、Referrerの問題を回避しやすくなります。
- 元のsrc: https://youtube.com/embed/rkZzg7Vowao?si=Ra4seeGxk7nRegTv
- 修正後: https://www.youtube-nocookie.com/embed/rkZzg7Vowao
- 「www.」を追加し、ドメインを「youtube-nocookie.com」に変更。
- 「?si=」パラメータは共有用で埋め込みには不要なので削除してください。これでエラーが解消されるケースが多いです。
修正後のHTML例:
text
<div class="senter" style="clear: both;">
<iframe width="960" height="540" src="https://www.youtube-nocookie.com/embed/rkZzg7Vowao" frameborder="0" allowfullscreen></iframe>
</div>
- allowfullscreen 属性を追加すると、フルスクリーン再生も可能になります。
2. Referrerポリシーを設定
DjangoのテンプレートやヘッダーでReferrer情報を送信するよう調整します。
- iframeタグに referrerpolicy="strict-origin-when-cross-origin" を追加:
text
<iframe ... referrerpolicy="strict-origin-when-cross-origin"></iframe> - DjangoのビューやミドルウェアでHTTPヘッダーを追加(例: settings.pyやmiddleware.pyで):
これにより、クロスオリジン時に参照元を送信します。text
response.headers['Referrer-Policy'] = 'strict-origin-when-cross-origin'
3. originパラメータの追加
埋め込みURLにあなたのドメインを指定:
- 修正後src: https://www.youtube.com/embed/rkZzg7Vowao?origin=https://yourdomain.com
- 「yourdomain.com」をあなたのブログのドメインに置き換えてください。これでYouTubeがリクエストを検証しやすくなります。
4. Django側の追加確認と設定
- Content Security Policy (CSP): DjangoのCSP設定(例: django-cspパッケージ使用時)がYouTubeドメインを許可しているか確認。frame-src 'self' https://*.youtube.com https://*.youtube-nocookie.com; を追加。
- ブラウザコンソール確認: ページをロードして開発者ツール(F12)でコンソールエラーをチェック。Referrer関連の警告が出ていないか。
- キャッシュクリア: ブラウザキャッシュやDjangoのキャッシュをクリアして再テスト。
- テスト環境: ローカルサーバー(例: python manage.py runserver)でなく、本番環境でテスト。ローカルではReferrerが正しく送信されない場合あり。
これらの方法で多くのユーザーが解決していますが、YouTube側の内部問題の可能性もあるため、持続する場合、GoogleのIssue TrackerやYouTubeヘルプフォーラムで最新情報を確認してください。 もしこれで直らない場合、詳細なエラーログやDjangoのバージョンを教えてください。
0 件のコメント:
コメントを投稿