搜尋
首頁web前端html教學Http狀態碼之:301、302重定向

概念

301 Moved Permanently 被要求的資源已永久移動到新位置,並且將來任何對此資源的引用都應該使用本回應返回的若干個URI之一。如果可能,擁有連結編輯功能的用戶端應自動把請求的位址修改為從伺服器回饋回來的位址。除非額外指定,否則這個回應也是可緩存的。 新的永久性的URI應在回應的Location域中傳回。除非這是HEAD請求,否則回應的實體應包含指向新的URI的超連結及簡短說明。 如果這不是一個GET或HEAD請求,因此瀏覽器禁止自動進行重定向,除非得到使用者的確認,因為請求的條件可能因此改變。 注意:對於某些使用HTTP/1.0協定的瀏覽器,當它們發送的POST請求得到了一個301回應的話,接下來的重定向請求將會變成GET方式。

302 Found 請求的資源現在暫時從不同的URI回應請求。由於這樣的重定向是暫時的,客戶端應繼續向原有位址發送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個回應才是可快取的。 新的臨時性的URI應在回應的Location域中傳回。除非這是HEAD請求,否則回應的實體應包含指向新的URI的超連結及簡短說明。 如果這不是GET或HEAD請求,那麼瀏覽器禁止自動進行重定向,除非得到使用者的確認,因為請求的條件可能因此改變。 注意:雖然RFC 1945和RFC 2068規範不允許客戶端在重定向時改變請求的方法,但是很多現存的瀏覽器將302響應視作為303響應,並且使用GET方式訪問在Location中規定的URI,而無視原先請求的方法。狀態碼303和307被加入了進來,用以明確伺服器期待客戶端進行何種反應。

這是從維基百科找來的概念,看完後還是能看懂個大概吧。 301是說訪問的資源已經永久刪除啦,客戶端要根據新的URI訪問重定向;而302的意思是說訪問的資源可能暫時先用location的URI訪問,但舊資源還在的,下次你再來訪問的時候可能就不用重定向了。

常用應用場景

  • 場景一 想換個域名,舊的域名不用啦,這樣用戶訪問舊域名時用301就重定向到新的域名。其實也是告訴搜尋引擎收錄的網域需要對新的網域進行收錄。

  • 場景二 登入後重新導向到指定的頁面,這種場景比較常見就是登入成功跳到具體的系統頁面。

  • 場景三 有時候需要自動刷新頁面,例如5秒後回到訂單詳細頁面之類。

  • 場景四 有時系統進行升級或切換某些功能時,需要臨時更換位址。

  • 場景五 像微博之類的使用短域名,用戶瀏覽後需要重定向到真實的地址之類。

程式碼示範

<code class="hljs"><span class="hljs-keyword">public <span class="hljs-function"><span class="hljs-keyword">void <span class="hljs-title">doGet<span class="hljs-params">(HttpServletRequest request, HttpServletResponse response)  
        <span class="hljs-keyword">throws ServletException, IOException {  
    <span class="hljs-comment">//请求重定向的例子  
    response.setStatus(<span class="hljs-number">301); 
    response.setHeader(<span class="hljs-string">"Location", <span class="hljs-string">"http://127.0.0.1/login.htm");
}</span></span></span></span></span></span></span></span></span></span></code>

在使用者造訪後瀏覽器都會重新導向到http://127.0.0.1/login.htm

301與302在選擇上註意的問題

302 重定向和網址劫持(URL hijacking) 從網址A 做一個302 重定向到網址B 時,主機伺服器的隱含意思是網址A 隨時有可能改主意,重新顯示本身的內容或轉向其他的地方。大部分的搜尋引擎在大部分情況下,當收到302重定向時,一般只要去抓取目標網址就可以了,也就是說網址B。如果搜尋引擎在遇到302 轉向時,百分之百的都抓取目標網址B 的話,就不用擔心網址URL 劫持了。問題就在於,有的時候搜尋引擎,尤其是Google,並不是總是抓取目標網址。比如說,有的時候A 網址很短,但是它做了一個302重定向到B網址,而B網址是一個很長的亂七八糟的URL網址,甚至還有可能包含一些問號之類的參數。很自然的,A網址更加用戶友好,而B網址既難看,又不用戶友好。這時Google很有可能會仍然顯示網址A。由於搜尋引擎排名演算法只是程式而不是人,在遇到302重定向的時候,並不能像人一樣的去準確判定哪一個網址更適當,這就造成了網址URL劫持的可能性。也就是說,一個不道德的人在他自己的網址A做一個302重定向到你的網址B,出於某種原因, Google搜尋結果所顯示的仍然是網址A,但是所用的網頁內容卻是你的網址B上的內容,這種情況就叫做網址URL 劫持。你辛苦所寫的內容就這樣被別人偷走了。 302重定向所造成的網址URL劫持現象,已經存在了一段時間。不過到目前為止,似乎也沒有什麼更好的解決方法。在正在進行的Google大爸爸資料中心轉換中,302 重定向問題也是要解決的目標之一。從一些搜尋結果來看,網址劫持現像有所改善,但是並沒有完全解決。

大體意思是會引起搜尋引擎的排名,而且302重定向很容易被搜尋引擎誤認為利用多個網域指向同一網站,那麼你的網站就會被封掉。

是說除非真是臨時重定向使用302,其他的情況最好還是使用301吧

參考資料

HTTP狀態碼 https://zh.wikipedia.org/wiki/HTTP狀態碼

http狀態碼301和302詳解及區別-辛酸的探索之路 http://blog.csdn.net/grandpang/article/details/47448395

302重定向 http://baike.baidu.com/view/2453504.htm

 

 

註:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文連結!
若您覺得這篇文章還不錯請點擊下右下角的推薦,非常感謝!
http://www.cnblogs.com/5207
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越HTML:網絡開發的基本技術超越HTML:網絡開發的基本技術Apr 26, 2025 am 12:04 AM

要構建一個功能強大且用戶體驗良好的網站,僅靠HTML是不夠的,還需要以下技術:JavaScript賦予網頁動態和交互性,通過操作DOM實現實時變化。 CSS負責網頁的樣式和佈局,提升美觀度和用戶體驗。現代框架和庫如React、Vue.js和Angular,提高開發效率和代碼組織結構。

HTML中的布爾屬性是什麼?舉一些例子。HTML中的布爾屬性是什麼?舉一些例子。Apr 25, 2025 am 12:01 AM

布爾屬性是HTML中的特殊屬性,不需要值即可激活。 1.布爾屬性通過存在與否控制元素行為,如disabled禁用輸入框。 2.它們的工作原理是瀏覽器解析時根據屬性的存在改變元素行為。 3.基本用法是直接添加屬性,高級用法可通過JavaScript動態控制。 4.常見錯誤是誤以為需要設置值,正確寫法應簡潔。 5.最佳實踐是保持代碼簡潔,合理使用布爾屬性以優化網頁性能和用戶體驗。

如何驗證您的HTML代碼?如何驗證您的HTML代碼?Apr 24, 2025 am 12:04 AM

HTML代碼可以通過在線驗證器、集成工具和自動化流程來確保其清潔度。 1)使用W3CMarkupValidationService在線驗證HTML代碼。 2)在VisualStudioCode中安裝並配置HTMLHint擴展進行實時驗證。 3)利用HTMLTidy在構建流程中自動驗證和清理HTML文件。

HTML與CSS和JavaScript:比較Web技術HTML與CSS和JavaScript:比較Web技術Apr 23, 2025 am 12:05 AM

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTML作為標記語言:其功能和目的HTML作為標記語言:其功能和目的Apr 22, 2025 am 12:02 AM

HTML的功能是定義網頁的結構和內容,其目的在於提供一種標準化的方式來展示信息。 1)HTML通過標籤和屬性組織網頁的各個部分,如標題和段落。 2)它支持內容與表現分離,提升維護效率。 3)HTML具有可擴展性,允許自定義標籤增強SEO。

HTML,CSS和JavaScript的未來:網絡開發趨勢HTML,CSS和JavaScript的未來:網絡開發趨勢Apr 19, 2025 am 12:02 AM

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML:結構,CSS:樣式,JavaScript:行為HTML:結構,CSS:樣式,JavaScript:行為Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來:網絡設計的發展和趨勢HTML的未來:網絡設計的發展和趨勢Apr 17, 2025 am 12:12 AM

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。