Сценарий: веб-сервер, на котором запущен один сайт с двумя разными адресами:
Оба доступны через HTTPS, и оба работают в одном приложении (будь то вызов веб-службы или обычный вызов www обрабатывается программно).
У меня есть веб-страница на этом сайте www, которая вызывает веб-службу на сайте ws1 через Javascript. Технически это вызов CORS. Однако для обратной совместимости я хочу сделать вызовы не CORS. Наилучший способ сделать это - создать правило перезаписи URL-адреса для разветвления пользовательского адреса (скажем, www.mysite.com/ws1/) на место веб-служб (ws1.mysite.com), чтобы браузеры не знали об этом. это CORS (потому что, в конце концов, это не "Cross-Origin", на самом деле).
Итак, я установил на сайте следующие правила:
<rewrite>
<rules>
<remove name="WS1-Inbound" />
<rule name="WS1-Inbound" enabled="false">
<match url="^ws1/(.*)" />
<conditions />
<serverVariables />
<action type="Rewrite" url="https://ws1-mysite.com/{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
<outboundRules>
<remove name="WS1-Outbound" />
<rule name="WS1-Outbound" enabled="false">
<match filterByTags="None" pattern="^https://ws1-mysite.com/(.*)" />
<conditions />
<action type="Rewrite" value="ws1/{R:1}" />
</rule>
</outboundRules>
</rewrite>
Это возвращает 404,4. Ага, я включаю ARR и получаю 502,3.
Правило для входящего трафика применяется успешно, оно никогда не попадает в правило для исходящего трафика.
Я:
В этом случае мешала инструкция HTTP Redirect, настроенная в IIS.
РЕДАКТИРОВАТЬ:
На узле веб-сайта в диспетчере IIS у меня было настроено перенаправление HTTP. Флажок «Перенаправить запросы на этот пункт назначения» был установлен, с «https://www.thisismysite.com"(минус" это ". Спасибо за форматирование ...) в качестве адреса. Ниже, в разделе" Поведение перенаправления "," Перенаправлять все запросы на точное место назначения (а не относительно пункта назначения). "Выбранный код состояния был" Найдено (302 ) ".
Я снял флажок «Перенаправить запросы на это место назначения». Я все еще пытаюсь понять, как это исправить.