重定向response.redirect與location.href 區別(轉)


前后端分離已經逐漸成為目前web開發的主流模式,前后端基於restful接口完成交互,直接跟瀏覽器交互的是前端頁面,這種模式想要實現瀏覽器重定向的功能只能通過在頁面JS腳本中添加location.href 的方式進行。比如訪問a.html頁面,a頁面中添加window.location="b.html",就能實現a頁面到b頁面的跳轉,但是因為a,b頁面都是存靜態頁面,所以兩次請求的http響應碼都是200,a到b的跳轉由瀏覽器解析JS腳本實現功能。這種模式下后端的restful接口一般不會存在302的http響應碼,因為它不直接參與與瀏覽器交互。

在前后端分離還不是很流行的時候,我們一般在一個項目中同時包含前后端代碼,請求由后端應用servlet映射解析之后轉發到前端頁面或后端接口。這種模式下,直接跟瀏覽器交互的就只有一個后端應用本身,實現重定向的功能可以在后端應用中通過添加response.redirect來實現,瀏覽器依然會發起兩次請求,第一次請求http響應碼是302,瀏覽器解析到302的狀態碼之后,會去響應頭字段中尋找name為location的header字段,並將該頭字段的值作為下一次請求的地址,正常一次跳轉的情況下,第一次http響應碼是302,第二次是200。

兩種方式的跳轉都是由瀏覽器來實現,一種是解析JS腳本,另一種則是解析http響應協議。
---------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM