Почему в IIS7 отсутствует серверная переменная HTTP_REFERER? - PullRequest
2 голосов
/ 03 октября 2010

Я использую Windows 2008 x64 R2 с IIS 7.5 и ASP.NET 2.0.

Я хочу использовать 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 Ответ

5 голосов
/ 04 октября 2010

При тестировании убедитесь, что вы действительно переходите на страницу, на которой печатаются переменные сервера, с другой веб-страницы.Например, создайте новую страницу со ссылкой, например:

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

, которая приведет вас на страницу с размещенным вами примером кода.

IIS не создаст HTTP_REFERER если браузер не отправит его.Браузер не отправит его, если первая страница, которую вы открываете, - та, на которой написан этот скрипт, потому что браузер нигде не «ссылался» на эту страницу.

...