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

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

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

www.somegenericdomain.com?site=someotherdomain

К этому --

www.someotherdomain.com

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

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

2 ответа

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

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

    • вернуть код ошибки 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-адресов исключает возможность изменения сервера.

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

Я думаю, что все это возможно, но не так, как перед 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
Другие вопросы по тегам