簡體   English   中英

Chrome重定向並發出同一頁面的2個請求(307內部重定向),如何防止?

[英]Chrome redirects and makes 2 requests of the same page (307 Internal Redirect), how to prevent?

我們在php有一個頁面,加載可能需要一些時間,響應時間可能超過30秒,腳本很重,正常,不對外開放。 該頁面每次執行時都會在我們的數據庫中保存一個日志,我注意到,當頁面加載速度快時,日志會保存一次,但如果響應時間較長,則日志會保存兩次。

奇怪的是,這只是發生在Chrome中,在Firefox上打開頁面時,即使加載時間很長,日志也只保存了一次。 這讓我推斷,當響應時間很長時,Chrome 會執行兩次頁面。

在 Chrome 中檢查網絡后,我發現實際上 Chrome 正在加載頁面兩次:

在此處輸入圖像描述

第一次被取消,然后重定向(307)並最終加載。 (在他的情況下,加載需要超過一分鍾,但這是正常的)

重定向不是 307 Temporary Redirect 而是 307 Internal Redirect 經過一番挖掘,事實證明 Chrome 實際上有一個擴展程序可以執行這種重定向(請參閱@Rob W. 307 Redirect when loading analytics.js in Chrome的分析器)

在此處輸入圖像描述

問題是:

  • 為什么 Chrome 會進行 307內部重定向(它會調用服務器兩次)
  • 以及如何從服務器端防止它? (我不想從 Chrome 修改配置,因為我不能要求所有用戶更改他們的配置)

謝謝!

  1. 307 internal redirect不是真正的重定向。 這是由 Chrome 完成的虛假內部重定向,實際上並沒有發送到服務器。 Chrome does it when it sees the HSTS non-authoritative header on and so it creates a fake request with a 307 internal redirect and then send a real request to the backend/server using the upgraded https URL found in the location header in the first fake internal redirect請求。 這是一項安全功能( http strict transport security ),允許站點選擇瀏覽器從http升級到https 您可以在此處查看@Barry 的答案https://stackoverflow.com/a/34213531/14876907

  2. 在啟用它的 web 服務器中找到配置。 它將類似於Strict-Transport-Security as header 發送到瀏覽器,因此找到它的設置位置然后將其刪除。 另外,請記住從 Chrome 的緩存中刪除網站本身,這樣 Chrome 就不會自動升級到https 它也可以設置在預加載到瀏覽器本身的域本身上(例如,任何帶有.dev.app的域名都將升級為使用https ;在這種情況下,真的沒有什么可做的。在此處檢查預加載的域https://hstspreload.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM