* 構文 [11] [[IPv6アドレス]]は ([[括弧]]で括るなどせずに) 直接書くことができるようです。 ;; [12] [[Squid]] などが対応しているようです。[[鯖側Webアプリケーション]]の類では [[IPv4アドレス]]にしか対応していないことが多々あります。 [13] [CODE(HTTP)@en[[[X-Forwarded-For:]]]] 欄を複数含めることにより (あるいは [CODE(HTTP)[[[,]]]] によって連結することにより) 多段の[[串]]の通過を表現できます。 ;; [14] [[鯖側Webアプリケーション]]の類ではこれに対応していないこともあります。 * 順序 [6] [[Wikipedia]] の説明によると先頭 (前) ほど[[クライアント]]側、末尾 (後) ほど[[鯖]]側の [[IPアドレス]]を表していることになっているようですが、 実際には必ずしもこの順序が守られているわけでは無いようです。 * 歴史 ** 誕生 [4] [CODE(HTTP)@en[[[X-Forwarded-For:]]]] は [[Squid]] が使い始めました。 [REFS[ - [1] ''Nonstandard HTTP Headers'' ]REFS] >X-Forwarded-For: [VAR[clientIPaddr]]|unknown >Squid が最初。 他のproxyがつけているのはSquidのマネ。 HTTP DraftがForwarded:からVia: へ変更されたのを受けて、 クライアントアドレスをどこかに残すために新設されました。 (changelogヨリ) -1.0.beta1: Forwarded: 追加 (User-Agent: ... via ... そのまま) -1.1.alpha17: User-Agent: via.. 廃止、Forwarded:のみ -1.1.beta21: Forwarded->Via -1.1.beta24: X-Forwarded-For 新設 >この頃の Squid はバージョンアップがやたら激しく、 alphaだbetaだreleaseだといった違いにあまり意味はありません。 >Forwarded: by [VAR[proxy-URI]] [([VAR[product]])] [for [VAR[client-FQDN]]] >draft-ietf-http-v10-spec-01.txt および draft-ietf-http-v11-spec-01.txt までの HTTP-draft に出現。 標準化に際しては 「冗長である」 という理由から Via: に置き換わっています。 "for ..." 部分は Via: から削られたため、Squid では代わりに X-Forwarded-For ヘッダを新設しました。 (当時まじめにDraft等を追っかけていたのは Squid くらいだったような気が) * 関連 [10] [CODE(HTTP)@en[[[X-Client-IP:]]]] 欄が使われることもあります。 * メモ [REFS[ - [2] [CITE@en[Content Transformation Guidelines 1.0]] ([TIME[2008-08-01 01:46:12 +09:00]] 版) - [3] [CITE@en[Guidelines for Web Content Transformation Proxies 1.0]] ( ([TIME[2010-10-22 17:20:31 +09:00]] 版)) ]REFS] [5] [CITE@en[X-Forwarded-For - Wikipedia, the free encyclopedia]] ( ([TIME[2012-02-16 13:54:05 +09:00]] 版)) [7] [CITE[suz-lab - blog: すでに"X-Forwarded-For"ヘッダのついたHTTPリクエストがELBを経由すると]] ( ([TIME[2012-02-26 09:13:31 +09:00]] 版)) [8] [CITE[リバースプロキシ環境下のapacheではmod_extract_forwardedよりもやっぱりmod_rpaf? - うまい棒blog]] ( ([TIME[2012-02-26 12:29:26 +09:00]] 版)) [9] [CITE@en[mod_remoteip - Apache HTTP Server]] ( ([TIME[2012-01-10 03:11:16 +09:00]] 版))