1. 程式人生 > >React中Fetch之cors跨域請求的使用

React中Fetch之cors跨域請求的使用

本篇文章主要介紹了react中fetch之cors跨域請求的實現方法,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。

專案中使用了react,當中需要使用fetch來代替ajax。

由於react的create_react_app工具很方便,基本上開箱即用,經過建立專案,輸入npm start命令後,便自動監聽一個3000的埠,到此前端部分就緒。

後端部分我使用了phalcon。

由於前後端分離,為了方便,我嘗試在nginx中使之同域(前端和後臺api的頂級域名相同),但phalcon框架是單入口、react監聽3000時候,通過nginx反向代理,出現js找不到的問題,於是放棄同域的打算。

因此我配置了兩個域名:

1、www.xxx.com 
2、data.xxx.com

第一個域名用於react部分,埠號是3000(除錯用,正式上線是80) 
第二個域名用於api,埠號是80

於是乎出現跨域問題。

以下是php部分的允許跨域域名訪問的設定

$origin    = isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:'';
$allowOrigin = [
          'http://www.xxx.com',
          'http://xxx.com'
        ];
if (in_array($origin, $allowOrigin)) {
  header('Access-Control-Allow-Origin: ' . $origin);
}//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
 
header('Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Content-Type, Accept');

以下是fetch部分的ajax請求

let postData = {a:'b'};
fetch('http://data.xxx.com/Admin/Login/login', {
  method: 'POST',
  mode: 'cors',
  credentials: 'include',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: JSON.stringify(postData)
}).then(function(response) {
  console.log(response);
});//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860

結語

感謝您的觀看,如有不足之處,歡迎批評指正。

本次給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入Q群:864305860,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。