2016-08-22 6 views
1

のMD5をチェックするので、私は、クライアントが、私はクッキーの値を取得するために傍受したいだけ1がMD5ハッシュを持つ任意のクッキーで送信するすべてのクッキーを確認するために$ HTTP_COOKIEをマップします。

正規表現

は、MD5ハッシュは、この

[0-9a-f]{32} 

で検出することが、私は私のマップディレクティブに追加したときに正規表現が間違っているので、nginxのは実行されません。

これは私のクッキーはこれで問題をマップであるが、それは私が唯一のMD5サムを持つものをしたいすべてのクッキーを取得しています。

map $http_cookie $session_id_value { 
default ''; 
~^.*.+\=(?<session_value>[\w]+).*$ $session_value; 
} 

私はこの

map $http_cookie $session_id_value { 
default ''; 
~^.*[0-9a-f]{32}.+\=(?<session_value>[\w]+).*$ $session_value; 
} 

を試してみてくださいしかし、nginxのは私の正規表現が好きではありません。エラーそれはそうと、実行されません。

私はエキスモジュールを使って私のregexが取得したクッキーの値を確認しますが、現在は名前のMD5​​ハッシュではなく最初のランダムなクッキーを取得し続けます。

echo "Session Cookie Value : $session_id_value"; 
echo "httpcookie : $http_cookie"; 

答えて

1

これは構文エラーです。 rewrite documentationから:正規表現は、「}」が含まれている場合は

または「;」の文字、全体 式は、単一または二重引用符で囲む必要があります。

試してみてください。

map $http_cookie $session_id_value { 
default ''; 
"~^.*[0-9a-f]{32}.+\=(?<session_value>[\w]+).*$" $session_value; 
}