Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2011, 15h57   #1
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Par défaut Requete Ajax retournant un 403

Bonjour à tous,

Voilà ce que je souhaite faire :
Je souhaite réaliser un page web de recherche à partir d'une BDD. J'ai donc un formulaire de recherche comportant des filtres sous forme de liste déroulante.

Pour info cette page permet de rechercher des salariés et afficher ceux correspondant aux critères (agence de travail, travaux réalisés, etc.)

Ce que j'aimerais faire, c'est que, dynamiquement, lorsque j'utilise mon select contenant la liste des salariés (récupérée via une requête sur table) et que je sélectionne une valeur, un petit cadre en dessous apparaît m'affichant des infos comme par exemple une date et un autre champs (la requete pour ce faire est déjà prête).

Donc j'ai choisis pour ce faire d'utiliser l'objet javascript XMLHttpRequest pour éxécuter ma requete via Javascript sans avoir à recharger ma page.

QUESTION 1 : XMLHttpRequest est il la meilleure solution pour effectuer une requete dynamique sans recharger une page complète ?

Pour l'instant j'essaie en affichant qu'un simple fichier texte (test.txt) contenant une phrase et qui seras affichée au onhange de mon select (ce fichier est dans le même répertoire que le fichier appelant)
Voilà le code de la fonction lancée à l'appel du onchange en HTML

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
function transmission()
{
 
		var xhr_object = getXMLHttpRequest(); /* Renvoie un objet XMLHttpRequest ou ActiveX en fonction du navigateur */
 
		xhr_object.onreadystatechange = function() 
		{
				alert("OK");
				alert('Status : ' + xhr_object.status);
				alert('Réponse : ' + xhr_object.responseText);
		};
 
		xhr_object.open("POST", "test.txt", true);
 
		xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 
 
		xhr_object.send(null);

Le message 'OK' est affiché 5 fois avant de me faire apparaitre une fenetre avec écrit 403 dedans.
La réponse est le code HTML suivant :


Code :
1
2
3
4
5
6
7
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access '...'</p>
</body></html>

Où '...' est le chemin relatif du repertoire FTP sur le serveur où se trouve le fichier.

J'ai fais des recherche sur l'Internet et apparrement ce refus d'accès serait peut être due du à une politique de sécurité avec des fichiers .htaccess J'ai trouvé ce fichier sur le serveur qui est lié à un fichier passwd contenant un mot de passe crypté mais je nais pas comment autoriser l'accès au fichier.

QUESTION 2 : Comment contourner un accès forbidden 403 ? Sachant que j'ai accès à ce serveur via FTP et une BDD via PHPMyAdmin.

Je précise que je suis complètement débutant en Ajax (j'en ai jamais entendu parler jusqu'à ce jour) et même en développement web en général, donc si j'ai commis des erreurs/confusions, je serai ravis de l'apprendre

Merci d'avance
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 21h10   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
mais je nais pas comment autoriser l'accès au fichier.
C'est probablement parce que tu n'as pas été regarder du coté de la
Comment accéder à une page nécessitant une athentification ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 22h58   #3
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Merci, effectivement je n'ai pas vu cette partie de la FAQ, merci ^^

Ok, donc en gros je met le contenu de mon fichier passwd.txt (fichier lié à .htaccess) dans l'url de la fonction open ?

Le mot de passe du fichier passwd est crypté mais je connais la version décryptée. J'essaie avec quelle version (cryptée ou décryptée ?)?
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 11h43   #4
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Re je viens d'essayer.

Vu que le fichier est dans le même dossier, je vais donc me retrouver avec un code du genre :

Code :
xhr_object.open("POST", "monlogin:monmdp@test.txt", true);
Où monmdp est mon mot de passe (version cryptée présente dans mon fichier passw.txt qui est appelé par .htaccess)
J'ai essayé avec le mot de passe "décrypté" aussi mais ça ne marche pas.

Idem sous cette forme :

Code :
1
2
 
xhr_object.open("POST", "test.txt", true, 'monlogin', 'monmdp');
FireBug me rends cette erreur :
Code :
1
2
3
403 Forbidden
		65ms	
"NetworkError: 403 Forbidden - http://monlogin:monmdp@adresseIP/mondossier/test.txt"
"adresseIP" est l'adresse du site (utilisée en tant qu'URL pour accéder au site).
J'ai également essayé en créer un fichier .htaccess dans le même répertoire que ma page appelante et mon "test.txt". ce fichier contient le code suivant :

Code :
1
2
3
4
5
order deny,allow
deny from all
<Files adresseIP/mondossier/test.txt>
allow from all
</Files>
Mais sans succès, toujours le même problème...



Pour indication, le fichier .htaccess dont je parlais dans le tous premier post est dans un répertoire parent à celui dans lequel je travail.

Voici son contenu actuel :

Code :
1
2
3
4
AuthName "Accès réservé"
AuthType Basic
AuthUserFile "repertoirecourant/img/passw.txt"
Require valid-user

Où "repertoirecourant" est l'URL absolue du dossier où se trouve mon .htacces (donc "passw.txt" est dans le dossier enfant "img").
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 09h55   #5
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Personne d'autre ne peux m'aider ?

J'ai plusieurs tests, et j'ai toujours cette erreur "403 Forbidden".

Sachant que j'ai accès au FTP (comprenant le dossier d'installation d'Apache et de MySQL, avec tous les autres fichiers du site), quel moyens me restent ils pour autoriser ce typed e reuqete Ajax ?

Se pourrait-il qu'il s'agisse d'une limitation/sécurité volontaire au niveau du serveur que je ne puisse pas changer ?
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h07   #6
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
AuthUserFile correspond au chemin du fichier contenant les utilisateurs autorisés (ton .htpasswd), pas le fichier que tu veux autoriser.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h27   #7
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par Bovino Voir le message
AuthUserFile correspond au chemin du fichier contenant les utilisateurs autorisés (ton .htpasswd), pas le fichier que tu veux autoriser.

Oui mais ici j'ai justement mis le fichier qui contient login:motdepassecrypté

Faut-il qu'il soit obligatoirement nommé ".htpasswd" ? (ici il s'appelle passw.txt)
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 20h58   #8
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Citation:
Envoyé par Jim_Crayon Voir le message
J'ai plusieurs tests, et j'ai toujours cette erreur "403 Forbidden".
Quand tu accèdes à cette page avec ton navigateur, de façon classique, as-tu toujours l'erreur ?
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 06h30   #9
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 129
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 129
Points : 7 266
Points : 7 266
Bonjour,

Perso, je n'appelle pas directement la page cible avec AJAX dans ton cas. Je vais passer par une page intermédiaire qui va appeler la page cible. C'est plus sécurisé que de passer le mot de passe dans une fonction javascript.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 12h15   #10
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par Watilin Voir le message
Quand tu accèdes à cette page avec ton navigateur, de façon classique, as-tu toujours l'erreur ?

Oui.
J'ai la page HTML 403 Forbiden qui s'affuiche (elle correspond au code source que je reçois en résultat de alert('Réponse : ' + xhr_object.responseText); )


Citation:
Perso, je n'appelle pas directement la page cible avec AJAX dans ton cas. Je vais passer par une page intermédiaire qui va appeler la page cible. C'est plus sécurisé que de passer le mot de passe dans une fonction javascript.
Que met-tu dans cette page intermédiaire ?
Je ne sais pas si ça peux résoudre mon problème.
Mon ressentis (partagé avec un collègue stagiaire) est que l'Ajax est désactivé sur notre Intranet...

Il y aurait-il une routine (script Javascript, fonction, bout de code, etc.) assez sûre pour tester si Ajax est autorisé sur un serveur ?

Et si il est désactivé, il y a t-il possibilité de le ré-activer ?
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 13h40   #11
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Citation:
Envoyé par Jim_Crayon Voir le message
Mon ressentis (partagé avec un collègue stagiaire) est que l'Ajax est désactivé sur notre Intranet...
Non, car justement une requête normale produit le même résultat. De plus, 403 correspond à une interdiction permanente. Si c'était un refus d'authentification, tu aurais une 401.

À mon avis, le problème vient du .htaccess. Vérifie auprès de ton hébergeur, il est possible que tu ne puisses pas utiliser toutes les fonctionnalités que tu voudrais. En l'occurence, la structure <File>...</File> est peut-être ignorée silencieusement.
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 15h50   #12
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Citation:
Envoyé par Watilin Voir le message
Non, car justement une requête normale produit le même résultat. De plus, 403 correspond à une interdiction permanente. Si c'était un refus d'authentification, tu aurais une 401.

À mon avis, le problème vient du .htaccess. Vérifie auprès de ton hébergeur, il est possible que tu ne puisses pas utiliser toutes les fonctionnalités que tu voudrais. En l’occurrence, la structure <File>...</File> est peut-être ignorée silencieusement.
Merci, par contre les requêtes "normales" fonctionnent très bien. J'en ai fait plusieurs et aucun soucis (en méthode POST et GET).
Par requêtes normales, j'entends soumission d'un formulaire à un code PHP dans la page ou dans une autre page, en cliquant sur un bouton et en rechargeant la page actuelle/en chargeant une autre.
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 16h03   #13
Membre du Club
 
Inscription : mars 2007
Messages : 251
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 251
Points : 69
Points : 69
Il me semble bien qu'une requête AJAX est une requête HTTP standard en GET ou POST (voire HEAD) selon la méthode configurée, mais qui retourne simplement un résultat par callback et pas directement à l'affichage.

Donc si ta requête fonctionne en mode navigation, elle doit aboutir en mode AJAX.

J'ai bon ?
behess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 10h20   #14
Invité de passage
 
Homme
Inscription : août 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 14
Points : 0
Points : 0
Je ne sais pas ce qu'est une requête en mode navigation.

Ce que je veux faire dans un premier temps (à des fins de tests, je ferai pointer ma fonction Ajax sur un fichier PHP après), c'est juste afficher un bête fichier texte dans une boite d'alerte.

J'ai également vérifié les droits d'accès au niveaud e FileZilla. J'ai mis 777 aussi bien pour le fichier appelant (contenant ma fonction Ajax) que pour le fichier de destination (test.txt) et pour le fichier .htaccess du répertoire courant.
Jim_Crayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 12h14   #15
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Une requête en mode navigation c'est une requête envoyée simplement par ton navigateur, lorsque tu visites la page. C'est la question que je t'ai posée plus haut, et tu m'as répondu que ça fonctionnait.

Techniquement, la forme de la requête est exactement la même, qu'elle soit envoyée en « mode navigation » ou en mode AJAX. Le serveur ne peut pas faire la différence, sauf si le développeur a choisi de rajouter des en-têtes dans sa requête AJAX (avec setRequestHeader) pour signaler qu'il s'agit d'AJAX. C'est, par exemple, ce que fait jQuery avec l'en-tête X-Requested-With.
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h23.


 
 
 
 
Partenaires

Hébergement Web