2012-01-06 3 views
7

特定のクッキーの値を取得してURLを構築するIIS 7.5 WebサイトのURL書き換えルールを記述する必要があります。例えば、着信要求は次のようになります。IIS7のURL書き換えを使用してクッキー内の値を取り込む

http://myserver.com/bar/test.aspx 

FTERがドキュメントをレビューして検索:

GET http://myserver.com/test.aspx HTTP/1.1 
Accept: text/html, application/xhtml+xml, */* 
Accept-Language: en-US 
User-Agent: Mozilla/5.0 
Host: myserver.com 
Cookie: foo=bar; bat=bar 

私は(「foo」というクッキー値に基づいて)このへのルートそれらをしたいのですがたとえば、私は困惑しています!ご協力いただきありがとうございます。

答えて

9

私自身の質問に答えると、ここに実例があります。パターンにはサポートする必要のある文字に応じて追加の作業が必要になることがありますが、次のルールでは検出されたCookie値と検出されたサーバーへのルートが使用され、サーバーはIPv4アドレスまたは名前(英数字および期間)。

<rule name="Route Base On Cookie" stopProcessing="true"> 
    <match url="^(.*)" /> 
    <conditions> 
     <add input="{HTTP_COOKIE}" pattern="foo=([0-9.a-zA-Z]+)" /> 
    </conditions> 
    <action type="Rewrite" url="http://{C:1}/{R:0}" /> 
</rule> 
+0

私は、パターンが可能なクッキー値と一致するように 'pattern =" foo = [^;] * "'をお勧めします。 「この文字列は、セミコロン、コンマ、および空白を除く一連の文字です.Netscape.comのオリジナル仕様」(http://curl.haxx.se/rfc/cookie_spec.html)を参照してください。名前や値にそのようなデータを配置する必要がありますが、エンコードは定義されていませんが、URLスタイル%XXエンコードなどのエンコード方法が推奨されています。あなたはそれを文字通り 'pattern =" foo = [^;、\ s] * "' – ErikE

+0

で取ることができます。@ Geoffrey - 私は同様の分野の問題に直面しています。 - http://stackoverflow.com/questions/34506551/reading-cookie-value-using-url-rewrite-for-iis-wizard-unable-to-validate-at – codetoshare

1

@Geoffreyは、任意のクッキー値を返すあなたのコードのサポートを行うために、私はこのパターンをお勧めしたい:リマインダーとして

<add input="{HTTP_COOKIE}" pattern="foo=(.*?);" /> 

を、{HTTP_COOKIE}値は、例えば次のようになります。

Cookie:foo = myexamplevalue;有効期限=水曜日、2014年5月3日22:31:08 GMT;パス= /; HttpOnly \ r \ n

+0

私はもともとあなたの正規表現を修正するためにコメントして、 '?'は '*'を非貪欲にします。よくやった。私がネガティブな文字クラスを好むのは、それらが潜在的に速いからです(特に、所有修飾子 '+'が指定されている場合)。 – ErikE

関連する問題