Есть ли какой-нибудь метод внешнего интерфейса, например file_get_contents (), который работает с перекрестным происхождением? - PullRequest
0 голосов
/ 23 апреля 2020

Я транслирую видео с Google Диска, и у меня есть два способа сделать это:

<video> 
  <source src="https://www.googleapis.com/drive/v3/files/videoXXX?key=APIXXX&alt=media"> 
</video>

или

<video>
  <source src="https://drive.google.com/uc?export=download&id=videoXXX">
</video>

Они оба достаточно хорошо работают для небольших файлов, но они захватите полноразмерное видео на div, ширина которых никогда не превышает 200 пикселей. В моих файлах большой скачок от 12 до 88 МБ. Все, что меньше 12 МБ, работает, а все, что больше 88, - нет, поэтому между ними есть отсечка.

Я обнаружил это, физически посетив URL-адрес в формате https://drive.google.com/file/d/videoXXX/view Я могу уменьшить качество, а затем щелкнуть правой кнопкой мыши и получить URL-адрес файла с низким разрешением.

Мне также удалось получить этот URL-адрес с помощью file_get_contents("https://drive.google.com/file/d/videoXXX/view") и проанализировать результат. Вы можете сделать то же самое с URL https://docs.google.com/get_video_info?docid=videoXXX.

Проблема в том, что этот URL-адрес зависит от IP-адреса пользователя, и его вставка в тег видео не работает (копирование и вставка в браузер также не работает), поскольку он заблокирован для IP-адрес сервера.

Я пытался получить его с помощью Ajax, загружая видео в iframe и захватывая источник, и совсем недавно, пытаясь загрузить заблокированный IP-адрес сервера на сервер и воспроизвести это оттуда.

За исключением самого последнего, я знаю, что это потому, что я не могу сделать это перекрестное происхождение, но почему PHP может это сделать? Как я могу загрузить эту страницу и / или получить этот URL-адрес на стороне клиента от IP-адреса пользователя?

1 Ответ

0 голосов
/ 23 апреля 2020

Я знаю, что это потому, что я не могу сделать это перекрестное происхождение, но почему PHP может это сделать?

Поскольку перекрестное происхождение принудительно выполняется в браузере, а не сервер. PHP игнорирует перекрестные заголовки происхождения. Браузеры будут применять их. Нет способа обойти их без изменения и перекомпиляции исходного кода браузера. Если бы был способ обойти CORS, он был бы бесполезен и не существовал бы.

...