是否有可能强制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=”时,它会显示一些内容。如何防止此事件? 感谢。
答案 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!
}