"Не удалось выполнить 'getImageData' 'CanvasRenderingContext2D': холст был испорчен данными из разных источников."для чайников - PullRequest
0 голосов
/ 16 сентября 2018

Когда я пытаюсь воспроизвести видео на нескольких сайтах, я получаю сообщение

"Failed to execute 'getImageData' on 'CanvasRenderingContext2D': 
 The canvas has been tainted by cross-origin data."

Каждое найденное мной решение - не только в Stackoverflow - написано для разработчиков, которые пытаются что-то добавитьв Chrome или не знаю что.

Ответы интересны для такого свидетеля, как я, но все они связаны с внесением исправлений в некоторый код.Я использую Chrome Spinoff, Slimjet, работающий на Windows 10. У кого-нибудь из вас есть предложения относительно того, что я могу сделать на уровне конечного пользователя?

Спасибо .... Рон

1 Ответ

0 голосов
/ 16 сентября 2018

"Когда я пытаюсь воспроизвести видео на нескольких сайтах ..."

Хотя вы не совсем «проигрываете» видео, скорее как «записываете» их, если задействуете Canvas. Это проблема защиты контента ( например: защищает те компании премиум-типа и все остальные).

«Есть ли у кого-нибудь из вас предложения относительно того, что я могу сделать на уровне конечного пользователя?»

Для работы Canvas видеоданные должны быть получены с вашего собственного домена (сайта).

Вариант 1 : скопируйте необходимый видеофайл в свое собственное пространство (где находится ваша HTML-страница).

Опция 2 : Используйте PHP-код (если возможно) для «прокси» ссылки. Это означает, что ваш источник тега <video> является ссылкой на скрипт PHP, и тот же самый скрипт PHP сам передает видеоданные. Теперь браузер заблуждается, думая, что видеоданные поступают откуда-то с вашего сервера.

HTML код тега видео:

<video id="myVid" preload="true">
  <source crossorigin="anonymous" src="http://www.yoursite.com/proxy_video.php">
</video>

PHP-код (внутри "proxy_video.php"):

<?php

$filename = "https://www...your_video_link";
$fp = fopen($filename, 'rb'); // open file pointer
$music = fpassthru($fp); // dump file stream to http
fclose($fp);

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...