为什么IIS7缺少HTTP_REFERER服务器变量?

时间:2010-10-03 08:40:53

标签: iis iis-7.5

我正在使用带有IIS 7.5和ASP.NET 2.0的Windows 2008 x64 R2。

我想使用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丢失了吗?

1 个答案:

答案 0 :(得分:5)

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

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

它会将您带到包含您发布的示例代码的页面。

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