仅通过jQuery-Ajax访问文件& PHP(没有直接的URL访问)

时间:2014-09-04 06:23:03

标签: php jquery html ajax

我有一些我正在使用的链接

jQuery的:

$("a.sync").on("click",function(e){
  e.preventDefault();
  var url = $(this).attr("href");
  $.post(url,function(data){
    $("#stage").html(data);
  });
});

HTML:

<a class="sync" href="__home.php">Link</a>

此链接只是从另一个页面恢复数据并将其同步放入#stage。 但使用inspect element用户可以看到链接 __ home.php ,并可以使用自定义URL直接访问它。
我不希望用户直接访问该文件,但只能使用Ajax调用...
怎么做?

3 个答案:

答案 0 :(得分:1)

你不能完全拒绝直接访问(有人可以模仿ajax请求),你可以让它变得更加困难。首先,尝试在__home.php上检查$ _SERVER ['HTTP_X_REQUESTED_WITH']。第二 - 阅读CSRF令牌

答案 1 :(得分:0)

这可能非常困难,因为您通过AJAX访问的文件必须是浏览网站的用户的公共内容 - 从后端的角度来看,客户端无论如何都会触发AJAX调用

例如,您可以使用某种令牌作为参数,但问题是令牌必须由发送请求的Javascript代码知道,因此最终用户也知道浏览该站点

Flash可能会启用文件系统文件,但我对此并不熟悉,而且看起来有点矫枉过正。

答案 2 :(得分:-1)

试试这个

$("a.sync").click(function(e){
  e.preventDefault();
  var url = $(this).attr("href");
  $("#stage").load(data);
  return false;
});