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

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

項目中使用了react,當中須要使用fetch來代替ajax。css

因爲react的create_react_app工具很方便,基本上開箱即用,通過建立項目,輸入npm start命令後,便自動監聽一個3000的端口,到此前端部分就緒。html

後端部分我使用了phalcon。前端

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

所以我配置了兩個域名:node

一、www.xxx.com  二、data.xxx.comreact

第一個域名用於react部分,端口號是3000(調試用,正式上線是80)  第二個域名用於api,端口號是80webpack

因而乎出現跨域問題。nginx

如下是php部分的容許跨域域名訪問的設置web

$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,快速升職加薪,走上人生巔峯。

相關文章
相關標籤/搜索