Bonjour,
j'aimerai accéder avec une servlet à un fichier se trouvant dans un répertoire protégé par un fichier .htaccess.
Cependant la servlet me renvoie constamment l'erreur 401 (accès refusé). Quelqu'un a-t-il une solution ?
Merci beaucoup
Steve
 .htaccess et servlets
 .htaccess et servlets
				
				
						
						
				Bonjour,
j'aimerai accéder avec une servlet à un fichier se trouvant dans un répertoire protégé par un fichier .htaccess.
Cependant la servlet me renvoie constamment l'erreur 401 (accès refusé). Quelqu'un a-t-il une solution ?
Merci beaucoup
Steve
 
 
				
				
						
						
				il faut que tu mette le login et le mot de passe dans l'adresse
exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://login:passe@serveur/répertoire/servlet
 
 
				
				
						
						
				Merci pour cette info mathix, malheureusement ça ne fonctionne toujours pas.
Pour être plus précis dans mon problème, j'appelle une page php avec ma servlet afin d'intégrer son code (qui représente un menu) autour de ma servlet. Voici le code :
C'est justement le fichier headerB2B.php qui est dans le répertoire protégé. Y'aurait-il une erreur dans mon fichier .htaccess ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6URL theURL = new URL("http://localhost/nimda/headerB2B.php"); BufferedReader readerHttp = new BufferedReader(new InputStreamReader(theURL.openStream())); String ligne ; while((ligne=readerHttp.readLine()) != null) writer.println(ligne) ;
Voici son contenu :
Merci pour toute aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
Steve
 
 
				
				
						
						
				Euréka !!!
En fait ma servlet accédait à un fichier dans ce répertoire protégé et le lisait. Tout ça grâce à un objet URL. J'ai trouvé une méthode qui permet d'encoder dans mon url le nom d'utilisateur et le mot de passe.
La voici, pour les personnes qui une fois seraient dans le même cas que moi (même si j'ai bien eu l'impression de me retrouver seul au monde cette fois-ci
et voici le code de la manière dont j'appelle le fichier dans ma servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71public InputStream openURLForInput (URL url, String uname, String pword) throws IOException { conn = url.openConnection(); conn.setDoInput (true); conn.setRequestProperty ("Authorization", userNamePasswordBase64(uname,pword)); conn.connect (); return conn.getInputStream(); } public String userNamePasswordBase64(String username, String password) { return "Basic " + base64Encode (username + ":" + password); } private final static char base64Array [] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' }; private static String base64Encode (String string) { String encodedString = ""; byte bytes [] = string.getBytes (); int i = 0; int pad = 0; while (i < bytes.length) { byte b1 = bytes [i++]; byte b2; byte b3; if (i >= bytes.length) { b2 = 0; b3 = 0; pad = 2; } else { b2 = bytes [i++]; if (i >= bytes.length) { b3 = 0; pad = 1; } else b3 = bytes [i++]; } byte c1 = (byte)(b1 >> 2); byte c2 = (byte)(((b1 & 0x3) << 4) | (b2 >> 4)); byte c3 = (byte)(((b2 & 0xf) << 2) | (b3 >> 6)); byte c4 = (byte)(b3 & 0x3f); encodedString += base64Array [c1]; encodedString += base64Array [c2]; switch (pad) { case 0: encodedString += base64Array [c3]; encodedString += base64Array [c4]; break; case 1: encodedString += base64Array [c3]; encodedString += "="; break; case 2: encodedString += "=="; break; } } return encodedString; }
Encore merci pour vos réponses !
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12try { BufferedReader readerHttp = new BufferedReader(new InputStreamReader(openURLForInput(new URL("http://serveur/nomPage"), "nomUtilisateur", "MotPasse"))); String ligne ; while((ligne=readerHttp.readLine()) != null) writer.println(ligne) ; } catch(Exception e) { writer.println("Erreur d'appel de la page : " + e.getMessage()) ; }
Steve
Partager