使用JavaScript基于referer从文件重定向
这个问题的版本已经发布了很多次,但是我在这个网站上找到的所有解决方案到目前为止都不起作用。我试图从文件中重定向,而不是网页。我实际上需要知道这是否可能,因为我知道PHP无法做到这一点。下面是我之前问的一个问题的答案: web服务器将首先检查它是否存在,如果存在,它将立即提供该文件。它不经过任何PHP代码。因此,您不能编写任何PHP代码来拦截并阻止该请求 我们网站上有一个路径为使用JavaScript基于referer从文件重定向,javascript,redirect,Javascript,Redirect,这个问题的版本已经发布了很多次,但是我在这个网站上找到的所有解决方案到目前为止都不起作用。我试图从文件中重定向,而不是网页。我实际上需要知道这是否可能,因为我知道PHP无法做到这一点。下面是我之前问的一个问题的答案: web服务器将首先检查它是否存在,如果存在,它将立即提供该文件。它不经过任何PHP代码。因此,您不能编写任何PHP代码来拦截并阻止该请求 我们网站上有一个路径为/downloads/的文件夹,其中包含我们不希望任何人下载的文件 我想在我们的主JavaScript文件中添加一个脚本,
/downloads/
的文件夹,其中包含我们不希望任何人下载的文件
我想在我们的主JavaScript文件中添加一个脚本,它说:
- 如果文件是
/downloads/
- 如果用户来自referer
,则允许访问allowed\u domain.com
/downloads/
- 其他重定向到主页或404
是的,我知道这是一个超级、超级不安全的限制访问的解决方案。我的公司正在研究一个更正式的解决方案,但在此之前,我需要实施一些临时措施,以阻止缺乏计算机知识或缺乏绕过重定向动机的用户,这几乎是我最后的选择。这个问题在JavaScript中无法解决,即使是以你提议的非常有限和不安全的方式。问题是对
/downloads/private.zip
的请求直接返回该文件的内容-它不会加载任何HTML页面,因此浏览器将永远不会看到或执行该JavaScript代码
解决这个问题的一种方法是使用一个PHP文件来处理对该目录的任何请求,检查用户是否有权查看这些文件,然后返回请求的文件或404。但为此,您需要某种形式的配置,并且您已经告诉我们您也不能这样做
第三种解决方案非常愚蠢,但在这种非常受限制的情况下(对于不安全的用户)会起作用,就是用一段JavaScript代码替换所有指向被禁止资源的链接,将用户指向文件或404页面。然而,从您的问题来看,您很可能试图阻止来自您无法控制的站点的用户访问,在这种情况下,这也不会起作用
一句话:如果您没有配置web服务器的能力,这不是一个可以解决的问题。谁告诉您这句话?这显然是错误的,当然,您可以将web服务器配置为包含PHP,而不是直接为文件提供服务。您需要在服务器端执行此操作,文档下载中不涉及客户端javascript。@Bergi您是说将文件放置在
public\u html
之外并通过PHP交付吗?因为我很想这样做,但是我的主机提供商不支持。是的,类似的,但是我很难相信nginx不会支持(除非你的主机对你的支付类别施加了任意限制)@JesseRogers你能更改目录名或移动文件吗?如果是这样的话,让PHP通过index.PHP?file=myfile.zip
传递这些文件,同时永远不要显示目录。@Bergi我不认为Nginx不支持它,但托管我网站web服务器的公司不允许它。
if (top.location.pathname === '/downloads/private.zip') {
if (document.referrer !== "http://www.allowed_domain.com") {
document.location.path = "/downloads/private.zip";
}
else {
document.location.path = "/404";
}
}