#express #redirect #iis #url-rewriting
#выражать #перенаправление #iis #url-переписывание
Вопрос:
Краткие сведения
Мой сервер Express вернул ответ URL перенаправления, например перенаправление на
https://domain_A.com/babababa
Я использовал IIS URL Rewrite
для перенаправления запроса URL на мой сервер Express. Запросы через IIS на сервер Express, возвращенный URL перенаправления изменен, домен изменен на мой домен, например
изменен с https://domain_A.com/babababa
на https://my-Domain.com/babababa
Подробности вопроса
мой экспресс-сервер
Мой сервер Express запущен http://localhost:8022
, если я перейду на маршрут http://localhost:8022/login
, он перенаправит меня на страницу за пределами моей сети https://domain_A.com/babababa
мои настройки IIS и перезаписи URL
Я настроил свой IIS для подключения к моему экспресс-серверу с помощью перезаписи URL.
- Мой IIS в моем домене:
https://my-Domain.com
- Настройка перезаписи URL:
https://my-Domain.com/Express
перенаправит запрос наhttp://localhost:8022
- в результате, если я перейду к
https://my-Domain.com/Express/login
, запрос перенаправляется на сервер Express, что совпадает с переходом кhttp://localhost:8022/login
Тестирование
Если я перейду на свой сервер express напрямую по URL http://localhost:8022/login
, я смогу правильно перенаправить свою страницу https://domain_A.com/babababa?...
. В консоли разработчика> Заголовки ответов> Местоположение отображается https://domain_A.com/babababa?...
Если я перехожу через IIS по URL https://my-Domain.com/login
-адресу, в результате я перенаправляюсь на неправильный URL https://my-Domain.com/babababa?...
-адрес (эта страница не существует)
в консоли разработчика> Заголовки ответов> Местоположение, которое он показывает https://my-Domain.com/babababa?...
Я полагаю, что домен места ответа заменен моим доменом.
первопричина и устранение?
Есть идеи, почему мой ответ IIS перенаправляет URL-адрес домена, который изменяется? любая информация и предложения о том, как это исправить, приветствуются! Спасибо за любую помощь!
Комментарии:
1. Привет, проблема решена? Если вы считаете, что мой ответ полезен для вас, вы можете пометить его как ответ.
2. спасибо за ваш ответ, на самом деле у меня другая проблема, связанная с перенаправлением ответа на стороннюю страницу. В настоящее время я «Резервирую перезаписать хост в заголовке ответа», чтобы избежать моей проблемы, но это все равно создало еще одну проблему, когда я перенаправляю на себя возвращенный IIS «localhost». Это очень сложно, но я нашел здесь еще один пост, который может помочь. Еще раз спасибо за ваш ответ.
3. Я думаю, что мой вопрос не очень ясен по поводу моей проблемы, в любом случае я нашел какой-то другой ресурс, который описал ту же проблему более подробно и с некоторыми указаниями, как ее решить. Еще один связанный с этим вопрос: serverfault.com/questions/849064 /…
4. Теперь эта проблема решена?
5. спасибо @DingPeng за ваш ответ, к сожалению, ваш ответ не решил мою проблему. Мне может понадобиться какое-то решение, например, настроить исходящее правило, чтобы решить проблему. В любом случае спасибо.
Ответ №1:
Основываясь на вашем описании, я думаю, что вы, возможно, захотите использовать IIS в качестве обратного прокси, вот демо-версия:
Сначала щелкните Application Request routing cache(если ARR не установлен, вы должны сначала установить его).:
Настройка обратного прокси-сервера:
Включить обратный прокси-сервер:
Это мой URL Переписать:
<rewrite>
<rules>
<rule name="Test" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://vpedin456VM/test.html" />
</rule>
</rules>
</rewrite>
Это правило перенаправляет все запросы localhost на vpedin456VM.
Зайдите на localhost, и вы увидите test.html в vpedin456VM IIS будет распространять запросы на localhost в vpedin456VM.
Ответ №2:
Рад, что наткнулся на эту ссылку.
Была такая же проблема с моим проектом.
Работает HTTPS -> на HTTP с использованием перезаписи URL. Возникла проблема с экспресс-перенаправлением, перенаправление на общедоступный URL переписывалось обратно на внутренний веб-сервер.
В IIS ARR снятие флажка с «узла обратной перезаписи в заголовках ответов» решило проблему.
(Извините, не могу проголосовать из-за низкой репутации. Я вернусь на эту страницу, как только заработаю репутацию не менее 15)
Спасибо, ребята
Комментарии:
1. Рад, что этот вопрос здесь помог кому-то другому. Я также использую «Обратную перезапись хоста в заголовках ответов» для перенаправления на общедоступный URL. Я использую свой сервер Express для выполнения единого входа в SAML, поэтому мне нужно перенаправить на страницу входа в Microsoft. Тем не менее, я помню, что есть еще одно ограничение, которое я не могу устранить (но забыл, что это такое, так как мое приложение не попадает под это ограничение, поэтому я пропустил его, чтобы устранить его). Всего наилучшего.