URL перенаправления ответа ExpressJS изменен IIS

#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. Тем не менее, я помню, что есть еще одно ограничение, которое я не могу устранить (но забыл, что это такое, так как мое приложение не попадает под это ограничение, поэтому я пропустил его, чтобы устранить его). Всего наилучшего.