Evolution #2529

"erreur 302" sur serveur http autres qu'Apache

Ajouté par Strange BlackHole il y a environ 6 ans. Mis à jour il y a 4 mois.

Statut:NouveauDébut:11/02/2012
Priorité:NormalEchéance:
Assigné à:-% réalisé:

0%

Catégorie:divers…
Version cible:3.2
Resolution:

Description

Utilisateur de Cherokee j'ai constaté que lors des changements de langue ou lors de la suppression du cookie de correspondance, j'avais une vilaine erreur 302 qui s'affichait au moment de la transition. En cherchant comment supprimer cette 302 ou même éventuellement comment y associer un squelette je suis tombé sur la cause du problème. Dans ecrire/inc/headers.php la fonction redirige_par_entete

// Il n'y a que sous Apache que setcookie puis redirection fonctionne
if (!$equiv OR (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'],6)==0) OR defined('_SERVER_APACHE')) {
     @header("Location: " . $url);
     $equiv="";
} else {
     @header("Refresh: 0; url=" . $url);
     $equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
}

Ne voulant pas toucher au core et pour contourner le problème je triche en ajoutant dans mes_options.php :

$_SERVER['SERVER_SOFTWARE'] = "Apache";

Donc je fais croire honteusement à Spip qu'il tourne sur un Apache. Je sais je lui mens et c'est moche mais bon, plus de 302...

Voila, si un jour Spip pouvais gérer nativement les serveurs http alternatifs ça serait pas mal.

Historique

#1 Mis à jour par cam.lafit - il y a environ 6 ans

Bonjour

Dans ton cas il me semble plus propre de définir la constante
_SERVER_APACHE à true.
Le problème des serveurs alternatifs c'est d'avoir des utilisateurs y
faisant appel, afin de pouvoir tester ces comportements.

On peut imaginer de faire un define _SERVER_302 listant les serveurs
autorisant ce comportement. Ce defini pourrait évoluer en fonction des
retours comme le tien.

#2 Mis à jour par Strange BlackHole il y a environ 6 ans

Perso j'utilise le quatuor Cherokee / php-fpm / sqlite3 / Spip depuis un bon moment et j'avais jamais pris le temps de comprendre ce qui provoquait cette erreur. C'est la pression d'un client (à juste titre) qui ma pousser à sérieusement investiguer. Je pense que les utilisateurs de Nginx doivent rencontrer le même problème, y a pas de raison. Mais je comprends bien que la demande doit être faible...

#3 Mis à jour par cedric - il y a environ 6 ans

tu nous dirais pas ce qu'indique $_SERVER['SERVER_SOFTWARE'] sur ton cherokee ?

#4 Mis à jour par Ben . il y a environ 6 ans

du neuf Strangeblachole ?

#5 Mis à jour par cedric - il y a presque 6 ans

  • Version cible changé de 2.1 à 3.1

je repousse à 3.1 : quand on aura une signature de $_SERVER['SERVER_SOFTWARE'] sur cherokee ou nginx on pourra completer. En attendant le meilleur fix est bien
define('_SERVER_APACHE',true); dans mes_options.php

#6 Mis à jour par Strange BlackHole il y a plus de 5 ans

Désolé, je me rend compte que j'ai complètement loupé les notifications autour de ce sujet.

Voici donc le retour de $_SERVER['SERVER_SOFTWARE'] sur cherokee et nginx:

Cherokee/1.2.2

nginx/1.2.1

Voila, ci ça peut aider...

;)

#7 Mis à jour par b b il y a 4 mois

  • Version cible changé de 3.1 à 3.2

Formats disponibles : Atom PDF

Ajouter une image à partir du presse-papier (Taille maximale: 1,25 Mo)