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

为什么IIS7缺少HTTP_REFERER服务器变量?,iis,iis-7.5,Iis,Iis 7.5,我正在将Windows 2008 x64 R2与IIS 7.5和ASP.NET 2.0一起使用 我想使用HTTP\u REFERER,但由于某些原因它不可用,因此我决定使用以下代码迭代所有服务器变量: foreach (string vars in Request.ServerVariables) { Response.Write (vars.ToString() + "\r\n <br/>"); } foreach(Request.ServerVariables中的字

我正在将Windows 2008 x64 R2与IIS 7.5和ASP.NET 2.0一起使用

我想使用
HTTP\u REFERER
,但由于某些原因它不可用,因此我决定使用以下代码迭代所有服务器变量:

foreach (string   vars in Request.ServerVariables)
{
    Response.Write (vars.ToString() + "\r\n <br/>");
}
foreach(Request.ServerVariables中的字符串变量)
{
Write(vars.ToString()+“\r\n
”); }
结果如下:

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 全生的 应用程序路径 应用物理路径 认证类型 授权用户 验证密码 登录用户 远程用户 证书饼干 证书标志 证书颁发者 证书密钥大小 证书加密密钥大小 证书序列号 证书服务器颁发者 证书服务器主题 证书科目 内容长度 内容类型 网关接口 HTTPS HTTPS\u密钥大小 HTTPS\u SECRETKEYSIZE HTTPS\u服务器\u颁发者 HTTPS\u服务器\u主题 实例ID 实例\元\路径 本地地址 路径信息 路径被翻译 查询字符串 远程地址 远程主机 远程端口 请求法 脚本名称 服务器名称 服务器端口 服务器\端口\安全 服务器协议 服务器软件 统一资源定位地址 HTTP\U连接 HTTP\u保持活力 HTTP_接受 HTTP_接受_字符集 HTTP_接受_语言 HTTP_主机 HTTP\u用户\u代理 HTTP________________
有人能解释为什么HTTP\u REFERER丢失吗?

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

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

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


除非浏览器发送,否则IIS不会创建HTTP\u REFERER。如果您打开的第一个页面是包含该脚本的页面,则浏览器不会发送该脚本,因为浏览器没有从任何位置“引用”到该页面。

是否验证浏览器是否正在发送引用?您可以使用firebug或chrome inspector检查请求头。