Page 1 sur 1

Suivre les redirections php en js utilisant fetch

Posté : 29 mars 2021, 01:04
par parfait
Bonsoir, ma situation est plutôt simple, je veux pouvoir réellement rédiger si dans un script php appelé en asynchrone il y'a une redirection.

Par exemple une page réserver à un admin, normalement he fait un truc comme ça:
<?php
    $auth->requireRole('admin'); // methode dans laquelle je rédige (header('Location: /')) vers la page d'accueil si l'utilisateur n'est pas admin
En synchrone tous fonctionne bien, mais lorsque j'appelle la même page ne asynchrone (fetch de js) j'aimerais que le redirection soit aussi effective.

Merci d'avance.

Re: Suivre les redirections php en js utilisant fetch

Posté : 29 mars 2021, 01:12
par parfait
Je me dit bien qui doit avoir un moyen pour écouter les redirections et faire un truc du genre
window.location.href = redirection

Re: Suivre les redirections php en js utilisant fetch

Posté : 29 mars 2021, 14:01
par or 1
le php ne fait pas la redirection, il retourne quelque chose disant qu'il faut faire une redirection. le js qui a appelé le php traite le retour de l'appel ajax du php, fait la redirection le cas échéant.

Re: Suivre les redirections php en js utilisant fetch

Posté : 29 mars 2021, 16:00
par parfait
Bonjour, merci déjà pour, le soucis ici c'est que l'application fonctionne en asynchrone et en synchrone. Donc il est possible que le page soit appelée directement où via une requête ajax.

Re: Suivre les redirections php en js utilisant fetch

Posté : 29 mars 2021, 16:09
par or 1
avoir 2 points d'entrées php règle le souci, un pour les appels synchrones qui retournent une page web complète, un autre pour un retour ajax.

Re: Suivre les redirections php en js utilisant fetch

Posté : 29 mars 2021, 16:15
par parfait
Mais faire ça pour toutes les pages est plutôt compliqué question structure de code, je me suis est possible d'avoir une fonction :
function verifyHTTP($url) {
   if (isAjax === true){
       return $url;
   }
   Header('Location: ' .$url);
}

Re: Suivre les redirections php en js utilisant fetch

Posté : 29 mars 2021, 18:01
par Ryle
Salutations !

Pas sûr de bien comprendre... quand tu appelles ta page avec du javascript, la condition est vérifiée : si l'utilisateur n'est pas admin, le serveur exécute le header et retourne le résultat de la nouvelle page (donc de la page d'accueil) à ton script...

Tu voudrais que si l'appel en js a déclenché le header, cela redirige également l'utilisateur vers la page d'accueil ? Pour cela il faut regarder le contenu de la réponse envoyée par le serveur, trouver l'élément qui te permet de savoir qu'il s'agit de la page d'accueil et effectuer une redirection automatique en javascript vers ta page d'accueil via un document.location par exemple...

Est-ce bien cela ?

Re: Suivre les redirections php en js utilisant fetch

Posté : 30 mars 2021, 15:06
par parfait
Salut Ryle, oui exactement mais dans le header renvoyé pas dans le navigateur il y'a pas une sorte de clé pour savoir s'il y'a eu une redirection

Re: Suivre les redirections php en js utilisant fetch

Posté : 30 mars 2021, 15:35
par Ryle
Il faudrait vérifier, mais en principe, le header('Location') de php retourne nativement au navigateur un code HTTP 302 pour indiquer qu'il y a eu une redirection. Au pire, si ce n'est pas le cas, tu peux ajouter ce code dans un second header côté php.

Côté javascript, si tu utilises jquery par exemple, il y a des méthodes getResponseHeader() et getAllResponseHeaders() qui te permettent de regarder les informations présentes dans le header de ta réponse. Si tu y trouves l'info de redirection que tu cherches, alors tu fais le document.location pour rediriger l'utilisateur, sinon tu peux poursuivre ton traitement :)

Après, en ce qui me concerne, je préfère avoir un message d'erreur m'indiquant que l'appel a échoué parce que je n'ai pas les droits nécessaires ou parce qu'il y a eu une erreur quelque part, plutôt que d'être redirigé vers une page d'accueil sans savoir pourquoi ;)