如果用户未登录,我试图阻止查看 javascript 页面 (.js),我想从 index.php 页面执行此操作以编写 404 或 403 标头,它是如何完成的?
注意:我不想使用 chmod 因为它全局更改文件权限而不是访问者
header("HTTP/1.0 404 Not Found", "js.js");
js.js 是一个错误参数,只是我想要它的示例或类似的东西,
如果用户未登录,我试图阻止查看 javascript 页面 (.js),我想从 index.php 页面执行此操作以编写 404 或 403 标头,它是如何完成的?
注意:我不想使用 chmod 因为它全局更改文件权限而不是访问者
header("HTTP/1.0 404 Not Found", "js.js");
js.js 是一个错误参数,只是我想要它的示例或类似的东西,
为此,您将需要一个单独的脚本。如
文件.php
$file = $_GET['file'];
//whitelist files
$filelist = array('js.js');
if(in_array($file, $filelist))
{
header('Cache Control: No-store');
header('Content-Disposition:inline;filename="' . $file . '"');
include "../files/$file";
}
使用它
<script src="files.php?file=js.js"></script>
并将您的文件放在网络不可访问的位置
除了使用单独的 php 脚本提供 *.js 之外,没有安全的方法可以做到这一点。在此脚本中,您将检查用户的 cookie/会话数据,然后 readfile() 您要保护的 js。
这是一个非常hacky的方式......你为什么需要它?
人们已经建议你如何做到这一点。这是一个实用的解决方案。
如前所述,您编写了一个脚本来检查会话并通过 header() 调用重定向到您想要的任何错误处理解决方案。
我不提倡您将脚本称为 js.js.php。通常,由于 apache 的内在问题,您不希望允许带有 somename.somename.ext 的文件。
因此,只需将您的脚本命名为 js.js。但是,js.js 的源代码应该是执行会话检查的 php 代码,如果没问题,则返回带有适当 mime 类型标头的 javascript 源代码。
然后在您的目录的 htaccess 中,您可以添加自定义文件规则:
<Files js.js>
SetHandler application/x-httpd-php
</Files>
然后 Apache 会将 js.js 视为 php 文件,即使此功能在其他情况下是不可见的。
这没有回答问题,但是如果用户没有必要的权限,可以做的就是不需要 JS 脚本。你试图做的是一种没有附加价值的矫枉过正。
<?php if ($isUserLoggedIn): ?>
<script src="js.js" type="text/javascript"></script>
<?php endif; ?>
您可以创建自己的 404 页面,并在您想要的文件部分使用包含功能。