重定向302

情景描述

  • 使用fetch發(fā)送請求
  • 服務器發(fā)現(xiàn)無法處理默穴,因此對請求進行了重定向處理。返回狀態(tài)碼302褪秀,并且在請求頭中賦予了Location令其跳轉(zhuǎn)到location的value中蓄诽。
  • 但是location對應的服務器不接受跨域請求,因此拿不到數(shù)據(jù)
  • 所以我們嘗試在fetch的回調(diào)函數(shù)中去處理媒吗,一旦fetch的response是302的時候做跳轉(zhuǎn)頁面
  • 但是不論在fetch的回調(diào)函數(shù)中做任何事情仑氛,都沒有用,似乎永遠執(zhí)行不到蝴猪。

矛盾點

  • fetch發(fā)送的請求调衰,response回來膊爪,本來都能觸發(fā)fetch的回調(diào)函數(shù)then的執(zhí)行,為什么這時候不會執(zhí)行了呢嚎莉?

解決

  • Q1:301和302都是重定向米酬,他們之間有什么區(qū)別呢?

  • A1:區(qū)別在于永久重定向和臨時重定向趋箩。

    • 301:永久重定向赃额。一旦請求發(fā)往某個URL,狀態(tài)碼返回301叫确,那么瀏覽器就會自動跳轉(zhuǎn)到header中Location對應的url跳芳。下次請求,再次向location對應的uri發(fā)送請求
      • 以后每次請求都會跳轉(zhuǎn)到location對應的uri中竹勉。沒有例外
      • 并且瀏覽器可以緩存從這個uri獲取到的到的響應飞盆。
    • 302:臨時重定向。請求的資源臨時從不同的uri獲取次乓。一旦請求發(fā)往某個URL吓歇,狀態(tài)碼返回302,那么瀏覽器就會自動跳轉(zhuǎn)到header中Location對應的url票腰。但是下次再次請求的時候向原來的uri發(fā)請求城看。
      • 每次請求是否向Location對的uri發(fā)請求不確定,因此需要先想原來的uri發(fā)送請求確定杏慰。
      • 瀏覽器不可緩存從重定向的uri獲取到的響應
  • Q2:fetch獲得302的response他的那么一種回調(diào)函數(shù)會被執(zhí)行测柠?(catch,then)

  • A2:經(jīng)過試驗fetch的catch回調(diào)函數(shù)會被調(diào)用缘滥,并且catch的參數(shù)是error僅僅只是fail to fetch轰胁。并且無法獲取任何有關response的信息。

  • Q3:那么重定向的過程是如何進行的呢完域?

    • fetch發(fā)送請求瀏覽器獲取response status是302
    • 瀏覽器會檢查請求頭中是否包含瀏覽器在發(fā)現(xiàn)Location的header時就會自動跳轉(zhuǎn)到Location所指定的URL地址软吐。
    • 然后瀏覽器直接請求Location指定的地址。此時fetch并不知情吟税,他以為請求還在處理過程中凹耙。
  • ---- 然而我們的實際情況

    • Location所指定的URL是一個跨域請求,但是對應的服務器無法處理跨域請求肠仪。因此跨域response返回給瀏覽器肖抱。
    • 瀏覽器再將結果返回給fetch。
    • 對于這種跨域失敗的請求异旧,fetch自動觸發(fā)了catch回調(diào)函數(shù)意述,并且給出error,fail to fetch
結論:對于重定向,當瀏覽器檢查到headers中存在Location荤崇,會直接進行跳轉(zhuǎn)拌屏,不會告知任何請求發(fā)送者(fetch)這時候發(fā)送者會以為請求還在處理中。
  • Q4:fetch不是只有服務器錯誤才會導致catch的觸發(fā)术荤,其他都會觸發(fā)then函數(shù)倚喂,那么302為什么會觸發(fā)then?
  • A4:根據(jù)上面的分析可知瓣戚,并不是302導致catch被觸發(fā)而是重定向后的請求的response導致catch被調(diào)用端圈。

反思

  • 本以為由于302所以導致fetch的catch被調(diào)用,我一直想知道什么樣的狀態(tài)碼會導致fetch catch調(diào)用子库,什么樣狀態(tài)碼導致fetch’的then調(diào)用舱权。本來想就直接在筆記本上記上。卻沒想到真正的原因是別的仑嗅。
  • 這是以前的學習一直有的毛病宴倍,聽到老師講的概念或者看到某個表象,猜測以后直接下定論仓技,然后記下來當成概念背下來啊楚,自己都沒有想過原理

ACTION

  • 還是一樣,每個問題一個筆記浑彰,只有通過筆記理清楚問題發(fā)生的原因結果,才會避免死記硬背拯辙,還能靈活的運用概念郭变。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涯保,隨后出現(xiàn)的幾起案子诉濒,更是在濱河造成了極大的恐慌,老刑警劉巖夕春,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件未荒,死亡現(xiàn)場離奇詭異,居然都是意外死亡及志,警方通過查閱死者的電腦和手機片排,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來速侈,“玉大人率寡,你說我怎么就攤上這事∫邪幔” “怎么了冶共?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我捅僵,道長家卖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任庙楚,我火速辦了婚禮上荡,結果婚禮上,老公的妹妹穿的比我還像新娘醋奠。我一直安慰自己榛臼,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布窜司。 她就那樣靜靜地躺著沛善,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塞祈。 梳的紋絲不亂的頭發(fā)上金刁,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音议薪,去河邊找鬼尤蛮。 笑死,一個胖子當著我的面吹牛斯议,可吹牛的內(nèi)容都是我干的产捞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼哼御,長吁一口氣:“原來是場噩夢啊……” “哼坯临!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恋昼,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤看靠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后液肌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挟炬,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年嗦哆,在試婚紗的時候發(fā)現(xiàn)自己被綠了谤祖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡吝秕,死狀恐怖泊脐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烁峭,我是刑警寧澤容客,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布秕铛,位于F島的核電站,受9級特大地震影響缩挑,放射性物質(zhì)發(fā)生泄漏但两。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一供置、第九天 我趴在偏房一處隱蔽的房頂上張望谨湘。 院中可真熱鬧,春花似錦芥丧、人聲如沸紧阔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擅耽。三九已至,卻和暖如春物遇,著一層夾襖步出監(jiān)牢的瞬間乖仇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工询兴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乃沙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓诗舰,卻偏偏與公主長得像警儒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子眶根,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容