2010-10-03 86 views
1

我使用Windows 2008 x64 R2与IIS 7.5和ASP.NET 2.0。为什么IIS7缺少HTTP_REFERER服务器变量?

我想用HTTP_REFERER但由于某种原因,但它不适用,因此我决定重复使用此代码的所有服务器瓦尔:

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

下面是结果:

 
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________________ 

灿任何人都可以解释为什么HTTP_REFERER缺失?

+2

您确认浏览器正在发送引用程序吗?您可以使用萤火虫或镀铬检查器检查请求标题。 – mikerobi 2010-10-03 23:35:47

回答

5

当您测试此项时,请确保您实际浏览到从其他网页打印服务器变量的页面。例如,创建一个具有链接的新页面,例如:

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

它将您带到具有您发布的示例代码的页面。

除非浏览器发送它,否则IIS不会创建HTTP_REFERER。如果您打开的第一页是使用该脚本的浏览器,则浏览器不会发送它,因为浏览器不会从任何地方“转介”到该页面。