React如何解決fetch跨域請(qǐng)求時(shí)session失效問題_第1頁
React如何解決fetch跨域請(qǐng)求時(shí)session失效問題_第2頁
React如何解決fetch跨域請(qǐng)求時(shí)session失效問題_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第React如何解決fetch跨域請(qǐng)求時(shí)session失效問題前言

fetch在reactjs中等同于XMLHttpRequest,它提供了許多與XMLHttpRequest相同的功能,但被設(shè)計(jì)成更具可擴(kuò)展性和高效性。

Fetch的核心在于對(duì)HTTP接口的抽象,包括Request,Response,Headers,Body,以及用于初始化異步請(qǐng)求的globalfetch。得益于JavaScript實(shí)現(xiàn)的這些抽象好的HTTP模塊,其他接口能夠很方便的使用這些功能;除此之外,F(xiàn)etch還利用到了請(qǐng)求的異步特性——它是基于Promise的。

請(qǐng)注意,fetch規(guī)范與jQuery.ajax()主要有兩種方式的不同,牢記:

當(dāng)接收到一個(gè)代表錯(cuò)誤的HTTP狀態(tài)碼時(shí),從fetch()返回的Promise不會(huì)被標(biāo)記為reject,即使該HTTP響應(yīng)的狀態(tài)碼是404或500。相反,它會(huì)將Promise狀態(tài)標(biāo)記為resolve(但是會(huì)將resolve的返回值的ok屬性設(shè)置為false),僅當(dāng)網(wǎng)絡(luò)故障時(shí)或請(qǐng)求被阻止時(shí),才會(huì)標(biāo)記為reject。

默認(rèn)情況下,fetch不會(huì)從服務(wù)端發(fā)送或接收任何cookies,如果站點(diǎn)依賴于用戶session,則會(huì)導(dǎo)致未經(jīng)認(rèn)證的請(qǐng)求(要發(fā)送cookies,必須設(shè)置credentials選項(xiàng)).

發(fā)現(xiàn)問題

在解決fetch跨域請(qǐng)求接口的時(shí)候,一般都是讓后臺(tái)接口在返回頭里添加

//允許所有域名的腳本訪問該資源

header("Access-Control-Allow-Origin:*");

確實(shí)這樣是可以解決跨域請(qǐng)求的問題,但是如果我們要在請(qǐng)求的時(shí)候添加session,那么這樣設(shè)置就會(huì)出現(xiàn)問題了。

fetch添加Cookie驗(yàn)證的方法是設(shè)置credentials:'include'

fetch(url,{

method:'POST',

body:JSON.stringify(params),

mode:'cors',

//請(qǐng)求時(shí)添加Cookie

credentials:'include',

headers:newHeaders({

'Accept':'application/json',

"Content-Type":"application/x-www-form-urlencoded;charset=utf-8",

})

設(shè)置好了之后,信心滿滿的發(fā)起請(qǐng)求。卻發(fā)現(xiàn)網(wǎng)絡(luò)請(qǐng)求報(bào)錯(cuò)了

Awildcard'*'cannotbeusedinthe'Access-Control-Allow-Origin'headerwhenthecredentialsflagistrue.Origin'http://localhost:3000'isthereforenotallowedaccess

解決方法

原因是網(wǎng)絡(luò)請(qǐng)求需要攜帶Cookie時(shí)Access-Control-Allow-Origin是不能設(shè)置為*的,這個(gè)時(shí)候應(yīng)該要給Acces

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論