Захват значения в куки с помощью перезаписи URL для IIS7 - PullRequest
9 голосов
/ 07 января 2012

Мне нужно написать правило перезаписи URL для моего веб-сайта IIS 7.5, которое фиксирует значение в определенном файле cookie, а затем использует это значение для создания URL. Например, входящие запросы выглядят так:

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"):

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

После просмотра документации и поиска примеров я в тупике! Спасибо за вашу помощь.

Ответы [ 2 ]

11 голосов
/ 07 января 2012

Отвечая на мой собственный вопрос, вот рабочий пример.Шаблон может потребовать дополнительной работы в зависимости от того, какие символы требуют поддержки, но следующее правило будет использовать обнаруженное значение cookie и маршрут к обнаруженному серверу - и сервер может быть указан по IPv4-адресу или по имени (буквенно-цифровой-и-период).

<rule name="Route Base On Cookie" stopProcessing="true">
  <match url="^(.*)" />
    <conditions>
       <add input="{HTTP_COOKIE}" pattern="foo=(.*?);" />
    </conditions>
  <action type="Rewrite" url="http://{C:1}/{R:0}" />
</rule>
2 голосов
/ 20 марта 2014

@ Geoffrey Чтобы ваш код поддерживал возвращение любого значения cookie, я рекомендую этот шаблон:

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

В качестве напоминания значение {HTTP_COOKIE} выглядит следующим образом, например:

Cookie: foo = myexamplevalue;истекает = ср, 03 мая 2014 года 22:31:08 мск;Путь = /;HttpOnly \ г \ п

...