Встраивание youtube-iframe завершается неудачно в sandbox-iframe - PullRequest
0 голосов
/ 20 января 2020

При встраивании youtube-iframe в другой iframe, который помещается в «песочницу» (для предотвращения XSS), игрок остается черным во всех основных браузерах.

См. https://jsfiddle.net/ms9fwLbk/

<!DOCTYPE html><html lang='en'><head><title>Sandbox iframe youtube problem</title></head><body>
<iframe sandbox='allow-scripts allow-presentation' width='600' height='400' srcdoc='
     <!DOCTYPE html><html lang="en"><head><title>iframe</title></head><body>
     <!-- original source-code shared from youtube: -->
     <iframe width="560" height="315"
         src="https://www.youtube.com/embed/QwS1r1mc888?controls=0"
         frameborder="0"
         allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
         allowfullscreen></iframe>
     </body></html>
'></iframe></body></html>

Журнал консоли браузера показывает следующие ошибки, потому что у youtube-api есть проблемы с CORS (allow-same-origin здесь не вариант, так как allow-scripts включен и сделает куки уязвимыми)

Uncaught DOMException: Failed to read the 'cookie' property from 'Document':
The document is sandboxed and lacks the 'allow-same-origin' flag.
at Vb.m.get (https://www.youtube.com/yts/jsbin/www-embed-player-vflwaq4V_/www-embed-player.js:142:47)
Access to XMLHttpRequest at 'https://www.youtube.com/error_204?...'
from origin 'null' has been blocked by CORS policy:
Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.

Это не помогает

  • разрешить дополнительные функции в песочнице или определить песочницу также во внутреннем iframe
  • use старый объект youtube встраивать исходный код
  • удалить параметры разрешения из проигрывателя youtube
  • применить режим расширенной конфиденциальности с помощью youtube-nocook ie .com

Как заставить youtube игнорировать cook ie -access- или preflight-origin-ограничение?

(Vimeo не имеет проблем в таком изолированном iframe, но некоторые видео доступны только в youtube.)

...