有没有像file_get_contents()这样的前端技术可以跨源工作?

问题描述 投票:0回答:1

我在流式传输Google Drive的视频,我有两种方法。

<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>

它们对小文件都有相当好的效果,但它们在divs上抓取的全尺寸视频永远不会超过200像素宽。在我的文件上有一个很大的跳跃,从12到88MB的大小。小于12mb的东西都能用,而大于88mb的东西就不行,所以在它们之间有一个截止点。

我发现,通过物理访问URL,格式为 https:/drive.google.comfiledvideoXXXview。我可以降低质量,然后右键单击并获得低分辨率文件的URL。

我也设法用以下方法获得该网址。file_get_contents("https://drive.google.com/file/d/videoXXX/view") 并对结果进行解析。你可以用URL做同样的事情 https:/docs.google.comget_video_info?docid=videoXXX。.

问题是这个URL依赖于用户的IP地址,将其嵌入到视频标签中不起作用(复制和粘贴到浏览器中也不起作用),因为它被锁定在服务器的IP上。

我试过用Ajax检索它,在iframe中加载视频并抓取源码,以及最近尝试下载服务器的IP锁定的URL到服务器上并从那里播放它。

除了最近的一次,我知道是因为我不能做这个跨源,但是为什么PHP能够做到呢?我怎样才能从用户的 IP 地址中加载这个页面并在客户端抓取 URL?

php google-drive-api video-streaming cross-domain
1个回答
0
投票

我知道是因为我不能做这个跨源,但是为什么PHP能够做到呢?

因为跨源是在浏览器中执行的,而不是在服务器上。PHP 忽略了跨源头。浏览器会执行它们。如果不修改和重新编译浏览器的源代码,就没有办法绕过它们。如果有办法绕过 CORS,那就没有用了,也就不存在了。

© www.soinside.com 2019 - 2024. All rights reserved.