如果对我的php页面的请求是ajax请求,我想检查服务器端.
我看到了两种方法:
第一种方式:GET在请求中发送一个参数,告诉页面这是一个AJAX请求(= mypage.php?ajax)
mypage.php:
if(isset($_GET['ajax'])) {
//this is an ajax request, process data here.
}
Run Code Online (Sandbox Code Playgroud)
第二种方式:设置标题为xmlHttpRequest:
客户端js:
xmlHttpRequestObject.open(“GET”,url,true);
xmlHttpRequestObject.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
Run Code Online (Sandbox Code Playgroud)
mypage.php:
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) {
//request is ajax
}
Run Code Online (Sandbox Code Playgroud)
事实是,这两种方式很容易被黑客攻击,因此检查我是否收到这样的AJAX请求是不安全的.
如何检查我是否收到了AJAX请求?
如何检查请求是否为AJAX?我正在使用CodeIgniter.我有一个链接,当它单击时,它将打开弹出对话框窗口,这是通过ajax请求控制器名称完成的login_window().
//Here is the controller name:
function login_window(){
// request via ajax
$this->load->view("login_window");
}
Run Code Online (Sandbox Code Playgroud)
//here is the jquery code:
//I am using a jquery plugin FACEBOX
$('a[rel*=dialog]').facebox();
<a href="http://localhost/codeigniter/login_window" rel="dialog">Login</a>
Run Code Online (Sandbox Code Playgroud)
我想检查它是否是一个AJAX请求,如果没有,我会将它们重定向到主页.所以他们无法访问仅适用于ajax请求的页面.