请问各位大神,怎么才能让服务器上的文件必须要在url包含cookies才能下载?
特别是是php重定向到真实文件后(php的方法我试过了,但是不能满足需求,需要的是哪怕php访问中携带了cookies,然后重定向到真实文件了,也需要带cookies才能下载真实文件)
比如像这个:
http://gdl.lixian.vip.xunlei.com/download?fid=0hr2bkwuxg+yu8/ssvhed9qpy3qim6ubaaaaapgvmm+tcuzfzssdkpa5avadbxss&mid=666&threshold=150&tid=2d7127d9ac515342bbcf3c2534a28b6e&srcid=4&verno=1&g=f81530cfad72e65fcec49d9296b9015683057b2c&scn=t13&i=f81530cfad72e65fcec49d9296b9015683057b2c&t=1&ui=352085248&ti=749121079740928&s=27603848&m=0&n=01397cb40c657475702d58903a2d786c384f549c3a00000000&ff=0&co=7146348578e47321f9adcdc2e65e5373&cm=1&pk=lixian&ak=1:1:6:4&e=2000000000&ms=10485760&ck=7d925ecc1c9c2cd1098d37bae3d249e3&at=bfbb6ae6fdc257d3bc3a9fdbfae45212
通过cookies验证后,重定向到:
http://vod39.t6.lixian.vip.xunlei.com:443/download?fid=vlmml5rbhepw40dajiwiazfss/ibl0i1aaaaagp5lqx3usw+vwah1lgogjx68tey&mid=666&threshold=150&tid=7a76d65fcfbedd0710723b8e9472cf47&srcid=4&verno=1&g=6a792d0c77b925be5566a1d4b18e189c7af137b2&scn=t6&i=d4fdf4149cf91ca34fc1a528291ba4d4&t=4&ui=346853248&ti=767920006498817&s=893529883&m=0&n=01226220f8d6e42e482500d46d34b8dfc784e7348ca2cbabd7b71f892f34000000&ff=0&co=907fcd65b217061ff4d04bdebfbd25d5&cm=1&pk=lixian&ak=1:0:2:3&e=2000000000&ms=10485760&ck=3c1c62b8c80d6c0c47c833d5a92def1d&at=d9ad4f55bc8c22c248a75e6e2459686e&k=1&ts=1410592408
还是需要带cookies才能下载这个文件。
(第二个url好像不是php的,因为下载的文件真实地址就是这个,没有再经过跳转和重定向了)
(url只是举例,访问不了的)
怎么实现这样的?
服务器是nginx/linux
回复内容: 请问各位大神,怎么才能让服务器上的文件必须要在url包含cookies才能下载?
特别是是php重定向到真实文件后(php的方法我试过了,但是不能满足需求,需要的是哪怕php访问中携带了cookies,然后重定向到真实文件了,也需要带cookies才能下载真实文件)
比如像这个:
http://gdl.lixian.vip.xunlei.com/download?fid=0hr2bkwuxg+yu8/ssvhed9qpy3qim6ubaaaaapgvmm+tcuzfzssdkpa5avadbxss&mid=666&threshold=150&tid=2d7127d9ac515342bbcf3c2534a28b6e&srcid=4&verno=1&g=f81530cfad72e65fcec49d9296b9015683057b2c&scn=t13&i=f81530cfad72e65fcec49d9296b9015683057b2c&t=1&ui=352085248&ti=749121079740928&s=27603848&m=0&n=01397cb40c657475702d58903a2d786c384f549c3a00000000&ff=0&co=7146348578e47321f9adcdc2e65e5373&cm=1&pk=lixian&ak=1:1:6:4&e=2000000000&ms=10485760&ck=7d925ecc1c9c2cd1098d37bae3d249e3&at=bfbb6ae6fdc257d3bc3a9fdbfae45212
通过cookies验证后,重定向到:
http://vod39.t6.lixian.vip.xunlei.com:443/download?fid=vlmml5rbhepw40dajiwiazfss/ibl0i1aaaaagp5lqx3usw+vwah1lgogjx68tey&mid=666&threshold=150&tid=7a76d65fcfbedd0710723b8e9472cf47&srcid=4&verno=1&g=6a792d0c77b925be5566a1d4b18e189c7af137b2&scn=t6&i=d4fdf4149cf91ca34fc1a528291ba4d4&t=4&ui=346853248&ti=767920006498817&s=893529883&m=0&n=01226220f8d6e42e482500d46d34b8dfc784e7348ca2cbabd7b71f892f34000000&ff=0&co=907fcd65b217061ff4d04bdebfbd25d5&cm=1&pk=lixian&ak=1:0:2:3&e=2000000000&ms=10485760&ck=3c1c62b8c80d6c0c47c833d5a92def1d&at=d9ad4f55bc8c22c248a75e6e2459686e&k=1&ts=1410592408
还是需要带cookies才能下载这个文件。
(第二个url好像不是php的,因为下载的文件真实地址就是这个,没有再经过跳转和重定向了)
(url只是举例,访问不了的)
怎么实现这样的?
服务器是nginx/linux
第二个可能是php的,
实现方式是验证,
php验证,php验证完了之后就输出文件内容,验证不通过就输出错误信息或者不输出东西。
别再跳转了 验证完cookie合法之后直接返回文件
不大可能实现应用程序服务器规则来控制,一般是php验证后跳转到真实地址。
用拦截器验证先
以前我曾经找人用c写了一个nginx 扩展来用。
现在可以用lua简单实现了。
nginx可以实现x-sendfile,把下载目录设置为internal即可
http://wiki.nginx.org/xsendfile
http://kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/