L’Ajax permet notamment de récupérer des résultats à travers des pages request.
Si cela offre de chouettes possibilités comme avec la fonction autocomplete de jQuery, il est intéressant d’empêcher l’accès directe à une page request ne serais-ce que pour une question esthétique.
Techniquement ce ne serait pas chose faisable car les accès Ajax se font un peu comme si un navigateur accédait directement à une page (malgré que cela ne se voie pas à l’écran).
Toutefois, le code suivant placé en début de page permet d’afficher un message et de restreindre lorsqu’un accès directe se produit.
if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest'){ // Ajax
echo("Accès directe non autorisé");
die();
}
// Code PHP
Cette astuce n’est pas 100% fiable et $_SERVER ne fait pas officiellement partie du standard PHP. Ceci dit la plupart des frameworks renvoient une valeur X-Requested-With.
En complément, une solution simple est de passer directement un flag en POST ou GET lors des accès.
– James Poulson.