首頁 >web前端 >js教程 >react中fetch之cors跨域請求的實作方法

react中fetch之cors跨域請求的實作方法

亚连
亚连原創
2018-05-30 14:01:495262瀏覽

本篇文章主要介紹了react中fetch之cors跨域請求的實作方法,現在分享給大家,也給大家做個參考。

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

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

具體參考:https://github.com/facebookincubator/create-react-app

後端部分我使用了phalcon。

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

因此我配置了兩個網域:

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

第一個域名用於react部分,連接埠號碼是3000(調試用,正式上線是80)
第二個網域用於api,連接埠號碼是80

於是乎出現跨域問題。

cors詳細的介紹請看:http://www.jb51.net/article/102694.htm

以下是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);
  }

  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);
});

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

iview日期控制項,雙向綁定日期格式的方法

解決iView中時間控制項選擇的時間總是少一天的問題

基於IView中on-change屬性的使用詳解

以上是react中fetch之cors跨域請求的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn