$ _SERVER ['HTTP_REFERER'] vs Request.ServerVariables ("HTTP_REFERER") - PullRequest
3 голосов
/ 31 мая 2010

Почему $ _SERVER ['HTTP_REFERER'] (PHP) и Request.ServerVariables ("HTTP_REFERER") (ASP) возвращают разные результаты, если строка запроса содержит не английские символы?

php вернет правильное значение, но asp не будет:

php: сабака

Асп: ׁ׀ ° ׀ ± ׀ ° ׀ ÷ ׀ °

1 Ответ

1 голос
/ 31 мая 2010

В соответствии с RFC 2616 символы, не указанные в ISO-8859-1, должны быть специально закодированы. Поэтому кажется, что тот, кто посылает вам заголовки, нарушает спецификацию. См. field-content и TEXT .

4.2 Заголовки сообщений

message-header = field-name ":" [ field-value ]
field-name     = token
field-value    = *( field-content | LWS )
field-content  = <the OCTETs making up the field-value
                 and consisting of either *TEXT or combinations
                 of token, separators, and quoted-string>

2.2 Основные правила

TEXT           = <any OCTET except CTLs,
                 but including LWS>

Правило TEXT используется только для содержимого описательного поля и значений, которые не предназначен для интерпретации анализатором сообщений. Слова * TEXT МОГУТ содержать символы из наборов символов, отличных от ISO-8859-1 [22], только если они закодированы в соответствии с правилами RFC 2047 [ 14 ].

...