欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React如何解決fetch跨域請求時session失效問題

 更新時間:2018年11月02日 14:08:11   作者:RaoMeng  
這篇文章主要給大家介紹了關(guān)于React如何解決fetch跨域請求時session失效問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

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

  • 當(dāng)接收到一個代表錯誤的 HTTP 狀態(tài)碼時,從 fetch()返回的 Promise 不會被標(biāo)記為 reject, 即使該 HTTP 響應(yīng)的狀態(tài)碼是 404 或 500。相反,它會將 Promise 狀態(tài)標(biāo)記為 resolve (但是會將 resolve 的返回值的 ok 屬性設(shè)置為 false ), 僅當(dāng)網(wǎng)絡(luò)故障時或請求被阻止時,才會標(biāo)記為 reject。
  • 默認(rèn)情況下, fetch 不會從服務(wù)端發(fā)送或接收任何 cookies, 如果站點依賴于用戶 session,則會導(dǎo)致未經(jīng)認(rèn)證的請求(要發(fā)送 cookies,必須設(shè)置 credentials 選項).

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

在解決fetch跨域請求接口的時候,一般都是讓后臺接口在返回頭里添加

//允許所有域名的腳本訪問該資源
header("Access-Control-Allow-Origin: *");

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

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

fetch(url, {
  method: 'POST',
  body: JSON.stringify(params),
  mode: 'cors',
  //請求時添加Cookie
  credentials: 'include',
  headers: new Headers({
   'Accept': 'application/json',
   "Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
  })
 })

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

A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://localhost:3000' is therefore not allowed access

解決方法

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

這樣就可以達(dá)到跨域請求的同時傳遞Cookie的目的了

  • 列表項目

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 一文詳解React組件API

    一文詳解React組件API

    這篇文章主要介紹了React的組件API,及組件API的用法詳解,文中有詳細(xì)的代碼示例,對學(xué)習(xí)或工作有一定的參考價值,感興趣的同學(xué)可以閱讀本文
    2023-04-04
  • React在組件中如何監(jiān)聽redux中state狀態(tài)的改變

    React在組件中如何監(jiān)聽redux中state狀態(tài)的改變

    這篇文章主要介紹了React在組件中如何監(jiān)聽redux中state狀態(tài)的改變,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 淺談React中的元素、組件、實例和節(jié)點

    淺談React中的元素、組件、實例和節(jié)點

    這篇文章主要介紹了淺談React中的元素、組件、實例和節(jié)點,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • react實現(xiàn)記錄拖動排序

    react實現(xiàn)記錄拖動排序

    這篇文章主要介紹了react實現(xiàn)記錄拖動排序的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • 淺談React多個setState會調(diào)用幾次

    淺談React多個setState會調(diào)用幾次

    在React的生命周期鉤子和合成事件中,多次執(zhí)行setState,會被調(diào)用幾次,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-11-11
  • 詳解React-Todos入門例子

    詳解React-Todos入門例子

    本篇文章主要介紹了React-Todos入門例子,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • react-router-dom之異步加載路由方式

    react-router-dom之異步加載路由方式

    這篇文章主要介紹了react-router-dom之異步加載路由方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • react 組件傳值的三種方法

    react 組件傳值的三種方法

    這篇文章主要介紹了react 組件傳值的三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • React Native日期時間選擇組件的示例代碼

    React Native日期時間選擇組件的示例代碼

    本篇文章主要介紹了React Native日期時間選擇組件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • React tabIndex使非表單元素支持focus和blur事件

    React tabIndex使非表單元素支持focus和blur事件

    這篇文章主要為大家介紹了React使用tabIndex使非表單元素支持focus和blur事件實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評論