2010-10-03 7 views
1

J'utilise Windows 2008 x64 R2 avec IIS 7.5 et ASP.NET 2.0.Pourquoi IIS7 manque-t-il la variable de serveur HTTP_REFERER?

Je veux utiliser HTTP_REFERER mais pour une raison quelconque, mais ce n'est pas disponible donc j'ai décidé de itérer tout le serveur vars en utilisant ce code:

foreach (string vars in Request.ServerVariables) 
{ 
    Response.Write (vars.ToString() + "\r\n <br/>"); 
} 

Voici le résultat:

 
ALL_HTTP 
ALL_RAW 
APPL_MD_PATH 
APPL_PHYSICAL_PATH 
AUTH_TYPE 
AUTH_USER 
AUTH_PASSWORD 
LOGON_USER 
REMOTE_USER 
CERT_COOKIE 
CERT_FLAGS 
CERT_ISSUER 
CERT_KEYSIZE 
CERT_SECRETKEYSIZE 
CERT_SERIALNUMBER 
CERT_SERVER_ISSUER 
CERT_SERVER_SUBJECT 
CERT_SUBJECT 
CONTENT_LENGTH 
CONTENT_TYPE 
GATEWAY_INTERFACE 
HTTPS 
HTTPS_KEYSIZE 
HTTPS_SECRETKEYSIZE 
HTTPS_SERVER_ISSUER 
HTTPS_SERVER_SUBJECT 
INSTANCE_ID 
INSTANCE_META_PATH 
LOCAL_ADDR 
PATH_INFO 
PATH_TRANSLATED 
QUERY_STRING 
REMOTE_ADDR 
REMOTE_HOST 
REMOTE_PORT 
REQUEST_METHOD 
SCRIPT_NAME 
SERVER_NAME 
SERVER_PORT 
SERVER_PORT_SECURE 
SERVER_PROTOCOL 
SERVER_SOFTWARE 
URL 
HTTP_CONNECTION 
HTTP_KEEP_ALIVE 
HTTP_ACCEPT 
HTTP_ACCEPT_CHARSET 
HTTP_ACCEPT_LANGUAGE 
HTTP_HOST 
HTTP_USER_AGENT 
HTTP________________ 

Can quelqu'un explique pourquoi HTTP_REFERER est manquant?

+2

Avez-vous vérifié que le navigateur envoyait un référent? Vous pouvez utiliser firebug ou l'inspecteur de chrome pour vérifier les en-têtes de la demande. – mikerobi

Répondre

5

Lorsque vous testez ceci, assurez-vous de parcourir la page qui imprime les variables du serveur à partir d'une autre page Web. Par exemple, créer une nouvelle page qui a un lien tel que:

<a href="printservervars.aspx">Click</a> 

qui vous emmène à la page qui a l'exemple de code que vous avez posté. IIS ne créera pas HTTP_REFERER à moins que le navigateur ne l'ait envoyé.

Le navigateur ne l'enverra pas si la première page que vous ouvrez est celle avec ce script parce que le navigateur n'a pas été «référencé» à cette page de n'importe où.