簡體   English   中英

如何在不影響瀏覽器歷史記錄的情況下實現導航?

[英]How do I achieve navigation without affecting browser history?

如果你在這里 go: http://twitter.com/account/resend_password

然后在不填寫表格的情況下單擊“發送說明”,它似乎正在執行一個完整的非 ajax 請求。

但是,如果我查看瀏覽器歷史記錄,前一頁 (resend_password) 不在歷史記錄中。 就好像它發出了 ajax 請求。

twitter 在做什么? 這真的只是一個 ajax 請求,還是在做一些棘手的事情?

window.location.replace將加載一個頁面,但不會將其保存在歷史記錄中。

window.location.replace('http://twitter.com/account/resend_password');

這不是 ajax 請求。

這也不是什么棘手的事情。

Twitter is only answering the HTTP POST request with an HTTP response code number 302 (Moved Temporarily) - see http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection . 瀏覽器回答好像它是一個 HTTP 響應代碼號 303(請參閱其他)。

事實上,所發生的只是重定向到同一頁面


編輯:添加代碼用於測試目的。

我剛剛用下面的代碼進行了測試,它證實了上面所說的:

<form method="post"><input type="submit" value="click here" /></form>
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
    header( 'Location: /test.php', true, 302 );
?>

我使用 PHP 作為服務器端語言。 我將此腳本作為test.php保存在網絡服務器公共根文件夾中。 它的行為與 Twitter 頁面完全相同:單擊表單提交按鈕,使用header function 觸發302 重定向 瀏覽器歷史不會改變。

暫無
暫無

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

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