Приложение Django, размещенное на IIS, внезапно начинает показывать страницу "Объект перемещен" плюс тарабарщину при 302 перенаправлении

Скриншот

Внутреннее веб-приложение Django размещено на Windows Server 2008 с IIS 7.5, с включенным Active Directory SSO. Некоторые ссылки в приложении отвечают 302. Например, если запрос направлен на myapp.com/change, сервер ответит 302 и перенаправит на myapp.com/change?user=5. В браузере в поле url отображается myapp.com/change?user=5, но страница выглядит как на картинке выше. Если я нажимаю enter в поле url, то происходит переход на правильную страницу.

Я пытался устранить неполадки с помощью DevTools. При нажатии на /change сервер отвечает 302, за которым следует 200, и больше ничего. 200 пустой, без заголовка или тела, и говорит "Внимание: запрос еще не завершен". В то же время на вкладке chrome отображается крутящийся значок, означающий, что сайт все еще загружается. Через несколько минут запрос 200 завершается, и вращение останавливается.

За последние пару недель в коде ничего не менялось, а два дня назад люди начали сообщать об этой проблеме. Сначала это не происходило со мной. Я пробовал очищать cookie и кэш, использовать разные браузеры и ПК, не мог воспроизвести это, затем вчера была запланированная перезагрузка ПК, и теперь я получаю это на всех моих браузерах и ПК.

Я подозреваю, что эта тарабарщина должна быть реальной html-страницей, каким-то образом добавленной к странице Object Moved. Возможно, 302 не обрабатывается правильно в клиенте. Но это не объясняет, почему это работало раньше.

Я застрял на этом уже два дня. Пожалуйста, если у кого-нибудь есть идеи. Дайте мне знать, если вам нужна дополнительная информация. Спасибо.

2021 пост в этой ссылке сработал для меня:

<outboundRules>
  <rule name="Remove injected 201 content" preCondition="Status 201">
    <match filterByTags="None" pattern="^(?:.*[\r\n]*)*.*&lt;/body>" />
    <action type="Rewrite" value="" />
  </rule>
  <preConditions>
   <preCondition name="Status 201" patternSyntax="Wildcard">
     <add input="{RESPONSE_STATUS}" pattern="201" ignoreCase="false" />
   </preCondition>
  </preConditions>
</outboundRules>

Очевидно, это ошибка в IIS 7.5. Вышеописанное является обходным решением, если настроить исходящее правило. В моем случае неправильно работает 302, поэтому я заменил 201 на 302.

Я до сих пор не могу понять, почему он вдруг так себя повел. Что-то должно было измениться, но это изменение произошло не со всеми сразу. Я думаю, что это какое-то обновление на стороне клиента, либо браузера, либо Windows, потому что это начало происходить на ПК, которые я тестировал, после запланированного перезапуска.

Вернуться на верх