Newsgroup: it.comp.os.linux.sys
Titolo: HTTP ERROR 403

Domandona: la pagina che cerco di ottenere gia GET HTTP non ha i 
permessi a livello applicazione (Drupal), nel senso che l'utente anonimo 
non puó visualizzare tale contenuto.
Giustamente la pagina visualizzata nel browser é una pagina di errore di 
Drupal, formattata correttamente in HTML con immagini e fronzoli vari, 
la quale spiega gentilmente all'utente che non puó visualizzare tale 
contenuto. E fin qui tutto ok.
Quello che non capisco é come mai apache invii in risposta HTTP/1.1 403 
Forbidden, che ne sa apache che tale utente non é autorizzato al 
contenuto sulla base di quello che c'é in una tabella mysql?
E perché dopo un 403 Forbidden mi spara l'html di risposta? Non era 
forbidden? Ecco una telnettata:
g4b0@gabodeb:~$ telnet 
test.prova.net
 80
Trying 46.4.195.67...
Connected to 
test.prova.net
.
Escape character is '^]'.
GET /path/al/contenuto HTTP/1.1
host: 
test.prova.net
HTTP/1.1 403 Forbidden
Date: Fri, 01 Apr 2011 06:52:38 GMT
Server: Apache
X-Powered-By: PHP/5.2.6-1+lenny10
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-Cookie: 
SESS3cb9e746be1f4d868ca5ec93b912d0ef=bb0051de009adca8226a9c811c72598e; 
expires=Sun, 24 Apr 2011 10:26:05 GMT; path=/; domain=.
test.prova.net
Last-Modified: Fri, 01 Apr 2011 06:52:45 GMT
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
4bf1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
[..snip..]
A quanto leggo su wikipedia (e da quanto mi ricordavo dei miei studi 
sulla bibbia del Comer) al codice 403 non dovrebbe seguire alcun HTML, 
proprio per la natura dell'errore:
403 Forbidden is a HTTP status code returned by a web server when a user 
agent requests a resource that the server does not allow them to. This 
response is returned by the Apache web server when directory listings 
have been disabled. Microsoft IIS responds in the same way when 
directory listings are denied. This response may also be returned by the 
server if the client issued a WebDAV PROPFIND request but did not also 
issue the required Depth header, or issued a Depth header of infinity.[1]
-- 
g4b0, linux user n. 369000
http://brosulo.net

 Apache ritorna la risposta che il CMS gli invia.
Pensavo che il controllo fosse a monte, direttamente sul web server. Ero 
convinto che una volta passata la richiesta all'interprete php la 
risposta fosse automaticamente 200 Success, ma evidentemente mi sbaglio.
Come faccio in php a restiruire l'errore 403 anziché 200?


 Come faccio in php a restiruire l'errore 403 anziché 200?
header('HTTP/1.1 403 Forbidden');
Di solito lo usi quando ti fai tu l'autenticazione. Se la fai fare ad 
Apache (con htaccess, per capirci) si arrangia Apache a ritornarlo (senza 
richiamare PHP).
Bye.

 Come faccio in php a restiruire l'errore 403 anziché 200?
Sostituendo brutalmente l'header di risposta, es.:
header("HTTP/1.1 403 Forbidden");
http://php.net/manual/en/function.header.php
-- 
r--r--r--

 header('HTTP/1.1 403 Forbidden');
Apperó, non la si smette mai di imparare. Non pensavo fosse possibile!
