间接文件 URL 的工作原理


How indirect file urls works?

我所知,url是指向资源的直接链接。我有Apache和PHP的经验,我知道使用.htaccess文件,可以为不需要提供结束文件名的位置设置默认文件(如index.php)。

但是对于文件链接,需要提供直接链接,文件名和扩展名如somedomain.com/file.txt。但是最近我发现一些链接,尤其是下载链接,没有带有文件名和扩展名的URL。

例如,我试图直接获取此YouTube视频.mp4文件网址 www.youtube.com/watch?v=W1- L58y2uf4 ,分辨率为1080p HD。然后我得到了一个网址(使用 clipconverter.cc);

http://r9---sn-25g7sne7.c.youtube.com/videoplayback?source=youtube& ip=2001:41d0:8:1f2b:3a0e:6049:6b4f:92 e9&expire=1378905654& sparams=cp,id,ip,ipbits,itag,ratebypass,sou rce,upn,expire&ipbits=48& upn=BgsjQ8lS424& cp=U0hWTVlLU19KTkNONl9RRVdHOkZIZ0 diYTFXLWRJ&key=yt1& id=5b5f8be7ccb6b9fe&mt=1378881529& ratebypass=yes&itag=37&sver=3& mv=m&fexp=903309,919391,910207,914071,916612,924606,929117,929121,92 9906,929907,929922,929127,929129,92 9131,929930,936403,925726,936310,92 5720,925722,925718,925714,929917,90 6945,929933,920302,906842,913428,92 0605,919811,913563,919373,930803,90 8536,938701,931924,936308,909549,90 0816,912711,904494,904497,939903,90 0375,900382,934507,907231,936312,90 6001&ms=au& signature=1DDD3BB4A46816E27075ADF1 3C84B810AD1DF72D.C9B4290CE7F0806A 3174E65DE3920F3AFDB06833& title=乞力马扎罗山+-+机器人+%282010%29 +%2AHD%2A+1080p+%2ABluRay%2A+ 音乐+视频

浏览器完美下载文件。这是如何工作的?此链接中的文件名和扩展名在哪里?

请重复:

网址 !== 文件
网址 !== 文件
网址 !== 文件

请求 URL 时,您的浏览器/HTTP 客户端/任何内容正在向 Web 服务器发送 HTTP 请求,请求 URL。Web 服务器可以自由地以任何它喜欢的方式响应此请求。URL 与硬盘上的文件完全无关。这只是一种方便的默认配置,Web 服务器查找与请求的 URL 同名的文件并提供这些文件。但它也可以做任何它想做的事。它可以启动一个 shell 脚本,该脚本将请求的 URL 作为参数传递,进而可以输出它想要的任何内容。Web 服务器可能是一个 Java 应用程序,它在内部处理请求的 URL 并使用一些内容进行响应。服务器可以是任何东西,它可以通过做任何它想做的事情来响应。Web 服务器只是一个侦听端口 80(或其他地方)并应答传入 HTTP 请求的应用程序。文件系统根本不需要参与。

您可能正在调用一个脚本,该脚本根据您的参数找到您想要的文件,并在发送之前修改标头,使您的浏览器将文件视为视频文件(并下载它)而不是常规的 html 文档

header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");