2010-05-31 85 views
3

爲什麼$ _ SERVER [ 'HTTP_REFERER'](PHP)和Request.ServerVariables( 「HTTP_REFERER」)(ASP)返回不同的結果,如果查詢字符串包含非英文字符?

PHP返回正確的值,但ASP將不會:

PHP:сабака

ASP:ׁ|°|±|°|÷|°

+1

有趣的問題! ASP.NET是一個直接引用嗎?你怎麼輸出它? – 2010-05-31 10:47:08

+0

如果您使用Web瀏覽器輸出,請查看頁面屬性中的編碼/字符集。 – VolkerK 2010-05-31 11:07:33

+0

@Pekka,與響應寫在ASP和回聲在PHP – Sasha 2010-05-31 11:14:03

回答

1

RFC 2616,字符無法在ISO- 8859-1應該被特別編碼。因此,看起來無論誰向你發送標題都違反了規範。請參閱字段內容TEXT

4.2 Message Headers

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 Basic Rules

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

的TEXT規則僅用於描述性字段內容和被 並不意值,以由消息解析器被解釋。僅當按照RFC 2047 [14]的規則進行編碼時,* TEXT的字可能包含來自ISO-8859-1 [22]以外字符集的字符。