http狀態碼301和302詳解及區別

?

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

?一直對http狀態碼301和302的理解比較模糊,在遇到實際的問題和翻閱各種資料了解后,算是有了一定的理解。這里記錄下,希望能有新的認識。大家也共勉。

?

官方的比較簡潔的說明:

? ? ? ? 301 redirect: 301 代表永久性轉移(Permanently Moved)

? ? ? ? 302 redirect: 302 代表暫時性轉移(Temporarily Moved )

? ? ? ? ps:這里也順帶記住了兩個比較相近的英語單詞(permanently、temporarily),嘻哈!

?

? ? ? ? 詳細來說,301和302狀態碼都表示重定向,就是說瀏覽器在拿到服務器返回的這個狀態碼后會自動跳轉到一個新的URL地址,這個地址可以從響應的Location首部中獲取(用戶看到的效果就是他輸入的地址A瞬間變成了另一個地址B)——這是它們的共同點。他們的不同在于。301表示舊地址A的資源已經被永久地移除了(這個資源不可訪問了),搜索引擎在抓取新內容的同時也將舊的網址交換為重定向之后的網址;302表示舊地址A的資源還在(仍然可以訪問),這個重定向只是臨時地從舊地址A跳轉到地址B,搜索引擎會抓取新的內容而保存舊的網址。

?

?

? ? ? 這里開啟傻瓜自問自答模式(自己可能想到的疑問):

1、什么是重定向啊?

? ? ? ? 就是地址A跳轉到地址B啦。百度百科的解釋:重定向(Redirect)就是通過各種方法將各種網絡請求重新定個方向轉到其它位置(如:網頁重定向、域名的重定向、路由選擇的變化也是對數據報文經由路徑的一種重定向)。

?

2、可是,為什么要進行重定向啊?什么時候需要重定向呢?

? ? ? ? 想跳就跳,就跳的漂亮。還是借鑒百度百科:

1)網站調整(如改變網頁目錄結構);
2)網頁被移到一個新地址;
3)網頁擴展名改變(如應用需要把.php改成.Html或.shtml)。
這種情況下,如果不做重定向,則用戶收藏夾或搜索引擎數據庫中舊地址只能讓訪問客戶得到一個404頁面錯誤信息,訪問流量白白喪失;再者某些注冊了多個域名的網站,也需要通過重定向讓訪問這些域名的用戶自動跳轉到主站點等。
3、那么,什么時候進行301或者302跳轉呢?
當一個網站或者網頁24—48小時內臨時移動到一個新的位置,這時候就要進行302跳轉,打個比方說,我有一套房子,但是最近走親戚去親戚家住了,過兩天我還回來的。而使用301跳轉的場景就是之前的網站因為某種原因需要移除掉,然后要到新的地址訪問,是永久性的,就比如你的那套房子其實是租的,現在租期到了,你又在另一個地方找到了房子,之前租的房子不住了。
清晰明確而言:
使用301跳轉的場景:
1)域名到期不想續費(或者發現了更適合網站的域名),想換個域名。
2)在搜索引擎的搜索結果中出現了不帶www的域名,而帶www的域名卻沒有收錄,這個時候可以用301重定向來告訴搜索引擎我們目標的域名是哪一個。
3)空間服務器不穩定,換空間的時候。
使用302跳轉的場景:
--盡量使用301跳轉!
4、為什么盡量要使用301跳轉?——網址劫持!
這里摘錄百度百科上的解釋:
? ? ? ??從網址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 劫持現象,已經存在一段時間了。不過到目前為止,似乎也沒有什么更好的解決方法。在正在進行的谷歌大爸爸數據中心轉換中,302 重定向問題也是要被解決的目標之一。從一些搜索結果來看,網址劫持現象有所改善,但是并沒有完全解決。
我的理解是,從網站A(網站比較爛)上做了一個302跳轉到網站B(搜索排名很靠前),這時候有時搜索引擎會使用網站B的內容,但卻收錄了網站A的地址,這樣在不知不覺間,網站B在為網站A作貢獻,網站A的排名就靠前了。
301跳轉對查找引擎是一種對照馴良的跳轉編制,也是查找引擎能夠遭遇的跳轉編制,它告訴查找引擎,這個地址棄用了,永遠轉向一個新地址,可以轉移新域名的權重。而302重定向很容易被搜索引擎誤認為是利用多個域名指向同一網站,那么你的網站就會被封掉,罪名是“利用重復的內容來干擾Google搜索結果的網站排名”。
自問自答模式先告一段落,這里分享下我在NodeJs中實現跳轉的場景:

?

? ? ? ? 之前做過一個重構的項目,由于各種原因,我們的網站的登錄以及注冊部分需要剝離為另一個網站,域名和之前的不同,所以,我們需要保證舊的地址也能重定向到地址中去,我們就在舊的系統的node層中作了一個重定向,代碼類似這樣:

?

這里沒有設置狀態碼,發現默認是302跳轉,然后我們設置了301狀態碼,類似這樣:

?

用fiddle抓包(上面的302調整我就不上圖了),看到效果:

?

以上是使用Express,用nodejs原生的代碼實現類似這樣:

?

? ? ? ? 先到這里了,路漫漫其修遠兮,下班回家。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449761.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449761.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449761.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

哪些編程語言需要修復?

摘要:編程語言有十全十美的嗎?每種語言都有缺陷嗎?這不,Java、C、C、Python都中槍了。語言之間也可相互“掐架”,一起來看下。 原文作者Kevin Kelleher采用一種比較新穎的方式來比較編程語言:即描述每個編程…

時間修改,學習

設定時間格式 import datetime print datetime.datetime.now().strftime("%Y-%m-%d %H:%M") # 2018-05-08 16:54 時間增加 import datetime print (datetime.datetime.now()datetime.timedelta(days1)).strftime("%Y-%m-%d %H:%M:%S") days改為hours m…

Python標準庫

《Python標準庫》基本信息原書名: The Python Standard Library by Example 原出版社: Pearson Education 作者: (美)Doug Hellmann 譯者: 劉熾 出版社:機械工業出版社 ISBN:9787111378105上架時間&#xf…

五種世界頂級思維-20190303

一、墨菲定律: 你越害怕什么,就越會發生什么。 二、吉爾伯特定律:工作中最大的困難就是沒人跟你說如何去做。 三、吉德林法則:把問題清楚的寫下來,就已經成功一半了。 四、沃爾森法則:把信息和金錢排在第一…

狀態碼301和302的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 定義如下: 301 Moved Permanently 被請求的資源已永久移動到新位置,并且將來任何對此資源的引用都應該使用本響應…

Perl迎來25歲生日

摘要:Perl迎來了它的第25歲生日,普天下Perlist都冒泡同慶一下,很多開發者喜歡它的理由是因其具備強力、穩定、成熟、可移植性等特點,Perl的愛好者們趕快送上你的祝福吧! 昨天,Perl迎來了它的第25歲生日&…

20165114 《網絡對抗技術》 Exp0 Kali安裝與配置 Week1

目錄: 一、kail的下載與安裝 二、kali的網絡設置 三、安裝vmware-tools。 四、更新軟件源。 五、共享文件夾 六、安裝中文輸入法 一、kail的下載與安裝 VMware workstation的安裝 因為之前的課程已經涉及,所以本機已經安裝好了VMware workstation&#x…

大數據:互聯網大規模數據挖掘與分布式處理

《大數據:互聯網大規模數據挖掘與分布式處理》基本信息原書名:Mining of Massive Datasets作者: (美)拉賈拉曼(Rajaraman,A.) (美)厄爾曼(Ullman,J.D.) [作譯者介紹]譯者: 王斌叢書名: 圖靈程序設計叢書出版社:人民郵電…

pip 切換源安裝

https://pypi.tuna.tsinghua.edu.cn/simple/ # 清華大學 https://mirrors.aliyun.com/pypi/simple/ # 阿里云 https://pypi.douban.com/simple/ # 豆瓣 https://pypi.mirrors.ustc.edu.cn/simple/ # 中國科學技術大學 https://pypi.hustunique.com/ # 華中科技大學 代碼…

String... 參數定義中有三個點的意思

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 有一個方法: protected void addMessage(String... messages) { ... } String... 是指參數的長度是可以變化的&#xff0…

SpringCloud框架搭建+實際例子+講解+系列五

(4)服務消費者,面向前端或者用戶的服務 本模塊涉及到很多知識點:比如Swagger的應用,SpringCloud斷路器的使用,服務API的檢查、token的校驗,feign消費者的使用。大致代碼框架如下: 先…

軟件開發者最重要的四大技能

摘要:現如今,可供選擇的技術、語言及平臺可謂五花八門,因此要弄明白哪里是花時間訓練的最佳投資點也就難上加難…… 現如今,可供選擇的技術、語言及平臺可謂五花八門,因此作為軟件開發者,要弄明白哪里是花時…

數據缺失的補充與修改

1查看數據情況 df.shape df.info() 2.用指定值填充 df df.fillna(x) 3.判斷是否缺失 df.isnull() 4.刪除缺失數據 df df.dropna() 5.補充平均值 df df.fillna(df.mean()) 6.填充他前面一個元素值(ffill向前填充,bfill向后填充)(limit:可以…

其他-私人♂收藏(比賽記錄 Mar, 2019)

OwO 03.03 [USACO19JAN] A. Redistricting 題意:給 \(g\) ,求 \(f(n)\) 。 \(f(i)f(j)[g(i)\ge g(j)],j \in (i-k,i]\) 。 離散化之后線段樹優化 DP ;或者發現額外貢獻最多只有 \(1\) ,單調隊列。 B. Exercise Route 題意&#xf…

JSR 303 - Bean Validation 簡介及使用方法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、JSR-303簡介 JSR-303 是 JAVA EE 6 中的一項子規范,叫做 Bean Validation,官方參考實現是Hibernate Valida…

POJ 3683 Priest John's Busiest Day(2-ST)

題目鏈接:http://poj.org/problem?id3683 題意:有n個婚禮要舉行,但是只有一個牧師。第i個婚禮使用牧師的時間長為leni,可以在開始時或結束時使用。問能否使得n個婚禮均舉行? 思路:對于婚禮i,i*2-1表示在開…

12個git實戰建議和技巧

摘要:git無疑是現在最熱門的版本控制工具,而且正在進一步侵占SVN以及CVS的市場。本文作者從國外技術問答社區Stack Overflow整理的12個很實用的git使用技巧和建議,希望對你有幫助。 1.使用“git diff”來折疊多行 用git diff經常會出現很多內…

python讀寫json和txt

讀寫json #數據保存如json文件 import json jsObj json.dumps(code_sec) fileObject open(jsonFile.json, w) fileObject.write(jsObj) fileObject.close() #讀取json文件 # 將類文件對象中的JSON字符串直接轉換成 Python 字典 with open(jsonFile.json, r, encoding…

Java 12 將于3月19日發布,8 個最終 JEP 一覽

開發四年只會寫業務代碼,分布式高并發都不會還做程序員? JDK 12 已于2018年12月進入 Rampdown Phase One 階段,這意味著該版本所有新的功能特性被凍結,不會再加入更多的 JEP 。該階段將持續一個月,主要修復 P1-P3 級…

股票期貨數據的resample處理

? import pandas as pd stock_day pd.read_csv("stock_day.csv") stock_day stock_day.sort_index() # 對每日交易數據進行重采樣 (頻率轉換) stock_day.index# 1、必須將時間索引類型轉換成Pandas默認的類型 stock_day.index pd.to_datet…