![](/img/trans.png)
[英]How to show the visitor a moved web page AND return a 301 redirect HTTP response status code in Django?
[英]Django App hosted on IIS suddenly starts to show "Object Moved" Page plus gibberish on 302 redirect
It's an internal Django web app is hosted on a Windows Server 2008 with IIS 7.5, with Active Directory SSO enabled. 應用程序中的某些鏈接以 302 響應。例如,如果請求是 go 到 myapp.com/change,則服務器將響應 302 並重定向到 myapp.com/change?user=5。 在瀏覽器中,url 字段顯示 myapp.com/change?user=5,但頁面看起來像上圖。 如果我在 url 字段上按 Enter 鍵,它會轉到正確的頁面。
我嘗試使用 DevTools 進行故障排除。 單擊 /change 時,服務器響應為 302,然后是 200,僅此而已。 200 是空白的,沒有 header 或正文,並顯示“警告:請求尚未完成”。 同時,在 chrome 選項卡上顯示旋轉圖標,表示它仍在加載。 幾分鍾后,200 次超時,旋轉停止。
在過去的幾周里,代碼中沒有任何變化,兩天前人們開始報告這個問題。 起初它並沒有發生在我身上。 我嘗試使用不同的瀏覽器和 PC 清除 cookie 和緩存,但無法復制它,然后昨天計划的 PC 重啟,我現在在我所有的瀏覽器和 PC 上都得到了這個。
我懷疑亂碼應該是實際頁面 html 以某種方式附加到 Object 移動頁面。 也許 302 在客戶端沒有正確處理。 但這並不能解釋為什么它以前有效。
我已經堅持了兩天了。 請,如果有人有任何想法。 如果您需要更多信息,請告訴我。 謝謝。
編輯添加:在屏幕截圖中,從“HTTP/1.1 200..”開始的可讀文本,實際上是以下 200 響應的 header,不知何故混入了 302 的正文。 順便說一句,這個 302 Object 移動頁面以前從未出現過。
此鏈接中的 2021 年帖子對我有用:
<outboundRules>
<rule name="Remove injected 201 content" preCondition="Status 201">
<match filterByTags="None" pattern="^(?:.*[\r\n]*)*.*</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 中的一個錯誤。 以上是通過設置 outboundRule 的解決方法。 就我而言,是 302 出了問題,所以我將 201 換成了 302。
我仍然不確定它為什么會突然變成這樣。 一定是發生了一些變化,但這種變化並不是一下子發生在每個人身上的。 我認為這是客戶端的某種更新,無論是瀏覽器還是 Windows,因為它開始發生在我在計划重啟后測試的 PC 上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.