2010-07-13 70 views
0

我试图从服务器启动一个下载,除非引用链接被设置为相同的域,否则将禁止403。目前,Header()允许我将用户重定向到文件位置并初始化下载,但引用者始终设置为我的脚本。使用curl会导致文件在服务器端下载。任何人都可以帮我找到解决方法来重定向用户,同时也设置引用?在PHP中设置Referer的替代标题()命令?

实施例的代码片断:

header("Location: $filelocation"); # Need to set Referer = $url 

回答

1

引荐,或一般地任何请求头,总是由请求方设置。您的服务器(即响应一方)无法强制客户端(浏览器)为请求设置任何特定标头。完全取决于浏览器要发送的头文件。

,你唯一能做的事情就是下载通过卷曲的图像,伪造任何你想要的头从服务器到客户端(因为你是请求方)和输出的图像(基本上充当代理)。这听起来像你正在做的事情,你真的不应该虽然,所以我会留给你来弄清楚。

+0

我明白如何在curl中伪造标题,但我又需要做这个客户端。我不希望这些文件,客户端。因此,如果PHP不能强制请求的头部有一种方法,当我向当前重定向我的PHP文件请求的JavaScript中做到这一点? 编辑:我很抱歉,如果这是OT,因为JavaScript不在标签中。 – ANaNiMuSe 2010-07-13 04:34:42

+0

@ANaNiMuSe您可以使用Javascript设置请求标头,是的。您可以通过这种方式获取原始图像数据,并使用它创建''元素。这可能是也可能不是你想要的,你将无法只下载图像,它总是需要被嵌入到HTML页面中。但你应该仔细阅读我的答案。 – deceze 2010-07-13 04:40:56

+0

我刚tryed此作为修复: 模具( “重定向<体的onLoad = \” javascript:window.location ='$ filelocation'; \“>”); 不是...你能说说你的javascript解决方案吗?我知道a)它有可能完成这个b)我真的很接近找出它,但是要么需要将我的头靠在墙上多打几个小时,要么找到一个遇到过这个野兽的魔术师。 在此先感谢! – ANaNiMuSe 2010-07-13 04:55:09