PHP:仅响应ajax请求

时间:2016-01-30 19:56:11

标签: php jquery ajax

是否有可能强制PHP仅响应ajax请求?通过设置标题等 例如,我们有这个代码:

if (str.length == 0) { 
    document.getElementById("txtHint").innerHTML = "";
    return;
} else {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    };
    xmlhttp.open("GET", "gethint.php?q=" + str, true);
    xmlhttp.send();
}

我们想要发一个ajax请求。现在,当我们在浏览器中键入“SITENAME.COM/gethint.php?q=”时,它会显示一些内容。如何防止此事件? 感谢。

2 个答案:

答案 0 :(得分:5)

您无法保证某人无法在非Ajax调用中访问此内容,但以下内容有助于防止非Ajax请求:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
     && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    // more code here
}

HTTP标头相当容易设置,因此不能保护它...只允许普通用户直接点击页面。

答案 1 :(得分:0)

你可以试试这个。

if (strtolower(filter_input(INPUT_SERVER, 'HTTP_X_REQUESTED_WITH')) === 'xmlhttprequest') {
   // I'm AJAX!
}