2016-01-30 89 views
0

是否有可能强制PHP只响应ajax请求?通过设置页眉或等 例如,我们有这样的代码:PHP:仅回应阿贾克斯请求

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='时,它会显示一些内容。如何预防此事件? 谢谢。

+0

http://stackoverflow.com/questions/8553611/verifying-xmlhttprequest-in-php的可能的复制 –

+0

可以使用POST方法我猜 –

+1

为什么你担心有人可以把网址到浏览器并看到内容?你知道通过网络发送的任何东西最终都可以在目的地进行检查吗? –

回答

5

你不能保证别人就不能进入本次非Ajax调用,但以下可以帮助防止非Ajax请求:

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

HTTP标头是很容易设置,所以它不会保护它......只是不允许普通用户直接点击页面。

+0

哦谢谢它的作品。 –

0

你可以试试这个。

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