IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur 500 lors d'une requête http


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut Erreur 500 lors d'une requête http
    Bonjour,

    Voila lorsque j'essaye d'envoyer une requête http vers une application java protégée par un mot de passe, le code retour est le code 500 (donc erreur interne au serveur) et dans les logs erreur d'apache j'ai ceci :

    [Wed Oct 29 14:44:57 2008] [warn] [client XX.XX.XX.XX] [22002] auth_ldap authenticate: user mon_user authentication failed; URI chemin/page_demandée [User not found][No such object]
    ma requête est construite comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    if (isset($_GET['url']) && $_GET['url'] != null && isset($_GET['login']) && $_GET['login'] != null && isset($_GET['passwd']) && $_GET['passwd'] != null)
    {
    	$url = str_replace("é", "&", unescapeUrl($_GET['url'])); //permet de restaurer les paramètres de l'url à interroger
     
    	$explode = explode("?", $url);
     
    	$explode[1] = str_replace(":", "%3A", $explode[1]); //traduction des signes :
     
    	$url = $explode[0].'?'.$explode[1]; //reconstruction de l'url
     
    	$login = unescapeUrl($_GET['login']);
    	$passwd = unescapeUrl($_GET['passwd']);
     
    	$cred = sprintf('Authorization: Basic %s', base64_encode($login.':'.$passwd)); 
    	$opts = array
    			(
    			    'http'=>array
    						(
    							'method'=>'GET',
    							'header'=>$cred,
    							'protocol_version'=>1.1
    						)
    			);
    	$ctx = stream_context_create($opts);
     
    	$validate = file_get_contents($url,false,$ctx);
     
    	echo '<pre>';var_dump($http_response_header);echo '</pre>';
    }

    et ce que j'ai à l'écran lorsque le lance la page :
    array(6) {
    [0]=>
    string(34) "HTTP/1.1 500 Internal Server Error"
    [1]=>
    string(35) "Date: Wed, 29 Oct 2008 13:44:57 GMT"
    [2]=>
    string(37) "Content-Type: text/html;charset=utf-8"
    [3]=>
    string(20) "Content-Length: 2970"
    [4]=>
    string(32) "Vary: Accept-Encoding,User-Agent"
    [5]=>
    string(17) "Connection: close"
    }
    Alors que lorsque je prends l'url, que je la colle dans un naviguateur et que j'utilise le même compte que celui passé en paramètre ca marche !

    D'ou cela peut-il venir ? je cherche depuis hier mais je ne trouve pas d'ou vient le problème ...

    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Salut,

    si ce n'est pas un problème de formatage des entêtes que tu forges, je dirais que cela provient des entêtes que tu ne forges pas.
    En fait la seule différence c'est que d'un coté tu utilises un client web, qui définit par exemple l'user agent, et que de l'autre c'est un script qui NE définit PAS l'user agent.
    Avec live http headers, jettes un oeil aux entêtes que tu envoies lorsque tu te connectes avec un browser puis essaies de les rajouter dans ton script.

    Avec un peu de bol.

    bye

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    j'ai essayé de regarder les en-tête lorsque j'appelle la page depuis mon script et lorsque je l'appelle directement depuis le naviguateur, j'ai remarqué que dans le 2e cas, la page réponds avec une erreur 401 car je ne suis pas encore authentifié, et que quand je m'authentifie j'ai une foule de fichiers chargés (tout est en code 200 donc ok)

    et la (je comprends absolument pas pourquoi) il ne m'affiche plus rien lorsque je fais le var_dump($http_response_header); (mais la page s'est bien chargée, mais je ne vois pas de traces de l'appel de la page via le script que j'affiche dans le naviguateur)

    je comprends rien ...


    EDIT : en fait c'est que l'équipe qui gère l'application a arreté le serveur apache (je viens de les appeler ... )
    Sinon le dernier test réussi retournait erreur 401 depuis un réseau et erreur 500 depuis un autre réseau (je peux attaquer la machine sur deux interfaces)

Discussions similaires

  1. Erreur improbable lors d'une requête
    Par Leopard_ dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/05/2013, 16h54
  2. [AJAX] Erreur vide lors d'une requête
    Par Dev222 dans le forum AJAX
    Réponses: 2
    Dernier message: 10/11/2012, 19h50
  3. Erreur 500 lors d'une erreur PHP
    Par keaton7 dans le forum Apache
    Réponses: 2
    Dernier message: 27/04/2012, 19h44
  4. Erreur #1064 lors d'une requête
    Par bigben89 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 03/06/2008, 12h59
  5. Erreur rencontrée lors d'une requête ALTER TABLE
    Par benoît82 dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/02/2008, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo