2010-10-03 87 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。如果您打開的第一頁是使用該腳本的瀏覽器,則瀏覽器不會發送它,因爲瀏覽器不會從任何地方「轉介」到該頁面。