Можно ли манипулировать запросом до того, как IIS назначит этот запрос определенному сайту? - PullRequest
1 голос
/ 23 марта 2010

Можно ли манипулировать входящим запросом на уровне IIS, прежде чем он даже будет назначен сайту на сервере?

По сути, я хочу переписать это -

www.somegenericdomain.com?site=someotherdomain

К этому -

www.someotherdomain.com

И мне нужно сделать это, прежде чем IIS определит, к какому сайту относится запрос, поэтому мне нужно изменить заголовок узла до этого момента.

Возможно, или сумасшедший? Мы работаем с IIS7.

Ответы [ 2 ]

1 голос
/ 23 марта 2010

Вы можете переписать, перенаправить или прокси-запросы.

  • Переписать изменяет запрос, но не меняет сайт, которому он назначен. С перезаписью вы можете:

    • вернуть код ошибки HTTP (503, 404, 401 и т. Д.);
    • манипулирует строкой запроса или путем URL. Одним из примеров является преобразование параметра строки запроса в элемент пути URL. www.server.com/default.aspx?s=foo становится www.server.com/foo или наоборот.
    • установить заголовки в запросе.
  • Redirect отправляет браузеру ответ 301 или 302 с обновленным адресом. Вы можете получить запрос на www.example.com/foo и ответить браузеру с 302 и обновленным адресом www.otherdomain.com и т. Д.

  • Прокси запрос. В этом случае веб-сервер действует как «прозрачный прокси». Это означает, что исходный сервер IIS может вызвать второй сервер, получить ответ и затем упаковать его обратно в исходный запросчик.

Эти три действия часто выполняются в комбинации. Инструменты, используемые для выполнения этих действий, называются «URL Rewriters». IIS7 имеет встроенную опцию от Microsoft ( Модуль перезаписи URL IIS ), а также есть сторонние опции, некоторые бесплатные и некоторые коммерческие, для IIS6, IIS7 и других веб-приложений, отличных от Windows. сервера. Apache mod_proxy является большим для Linux. Все эти инструменты делают в основном одни и те же вещи.


Чтобы ответить на ваш конкретный вопрос, НЕТ, вы не можете переписать запрос из одного домена в другой. Для веб-серверов переписать - значимый термин, а перезапись URL исключает возможность смены сервера.

Возможно, однако, преобразовать запрос с одного сервера на другой через перенаправление или прокси. Одним из них может быть то, что вам нужно, когда вы спрашиваете о «переписывании» запроса.

0 голосов
/ 24 марта 2010

Я полагаю, что все это возможно, но не в способе запуска до IIS. Одна часть сервера даже работает как драйвер низкого уровня. Но вы можете использовать решения для перезаписи URL, такие как модуль mod_rewrite Helicon Ape http://www.helicontech.com/ape/doc/mod_rewrite.htm. Установив программное обеспечение глобально для всех сайтов, вы можете получить то, что вам нужно, следующим образом:

RewriteEngine on
RewriteCond %{HTTP_HOST} www.somegenericdomain.com [NC]
RewriteProxy (.*) http://www.someotherdomain.com$1
...