我有一些我正在使用的链接
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调用...
怎么做?
答案 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;
});