среда, 12 августа 2015 г.

Reverse rewrite host in response headers

Немного хитрая задача. HTTP запрос приходит на abc.com/xyz/ . С помощью IIS ARR (Application Request Routing) делаю rewrite на bcd.com/xyz/ (т.е. использую reverse proxy). И уже оттуда делаю 301 redirect на cde.com/something/

Т.е. нужно не просто перенаправить на другой домен, а ещё и поменять путь в процессе. Необходимая логика храниться на сервере bcd.com, и её нельзя переместить сразу на abc.com

Проблема: перенапраление происходит на второй, а не на третий домен (на bcd.com вместо cde.com). В HTTP-заголовке Location bcd.com вместо cde.com. Однако в HTML body вижу правильный текст object moved to cde.com/something/ . Т.е. мое приложение явно пытается сделать правильный 301 redirect, просто ARR портит заголовок в HTTP response.

Решение: в IIS Manager нажимаем на имя сервера, заходим в Application Request Routing Cache -> Server Proxy Settings, и отключаем 'Reverse rewrite host in response headers'.

Комментариев нет:

Ratings by outbrain