仅为 ajax 请求保留文件


Reserve file for ajax request only

我有大量的脚本,我的核心应用程序

    include('JS/gramp.php');
    include('JS/est.php');
    include('JS/curest.php');
    include('JS/memomarker.php');
    include('JS/local----------.php');
    include('JS/poirel.php');
    include('JS/maplayers.php');
    include('JS/trafficinc.php');
    include('JS/plannedtraffic.php');
    include('JS/transportissues.php');
    include('JS/cams_traff.php');
    include('JS/places2.php');

现在,这些都已移至动态加载,以减小加载时应用程序的大小

if(button_case_curtime==true){
        $(".jsstm").load("<?php echo $core_dir; ?>JS/curresttime.php?la=<?php echo $caseset['iplat']; ?>&lo=<?php echo $caseset['iplong']; ?>&h=<?php echo $days_h; ?>");
        rendermap = true;
        }

问题!应用程序要求这些文件是安全的,所涉及的数据要求没有人可以访问。

唯一会请求这些文件的文件将是索引.php

任何输入或想法都很棒!

如果不

向用户提供文件,就无法向浏览器提供文件。

您可以将服务器配置为仅提供给定额外HTTP标头的文件(您可以使用JS添加),但是没有什么可以阻止人们手动发送该标头或只是从浏览器的调试工具中挖掘源代码。

您向其提供文件的任何用户都将有权访问这些文件。如果要限制哪些用户可以访问它们,则必须使用 auth/authz(您还需要将其应用于索引.php文件,以便未经授权的用户不仅会收到 JS 错误或静默失败状态)。

No.你试图做的事情是不可能的。Ajax 请求并不特殊。它们只是HTTP请求。为 Ajax 创建的端点应像任何其他 HTTP 请求端点一样使用身份验证/授权进行保护。

这是一个微不足道的解决方案,可以半途而废地解决您的问题。通过 POST 请求请求它们,如下所示:

$.post('JS/maplayers.php', {'ajax':true}, function(){});

请注意 POST 变量 'ajax'。在文件maplayer.php中,将以下代码添加到开头:

if((!isset($_POST['ajax']))) {
       die('Invalid request, only ajax requests are permitted');
   }