我正在使用带有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
丢失了吗?
答案 0 :(得分:5)
测试时,请确保实际浏览到从其他网页打印服务器变量的页面。例如,创建一个具有以下链接的新页面:
<a href="printservervars.aspx">Click</a>
它会将您带到包含您发布的示例代码的页面。
除非浏览器发送,否则IIS不会创建HTTP_REFERER
。如果您打开的第一个页面是带有该脚本的页面,浏览器将不会发送它,因为浏览器没有从任何地方“引用”该页面。