Reactのfetchでのcorsクロスドメインリクエストの実装方法

亚连
リリース: 2018-05-30 14:01:49
オリジナル
5238 人が閲覧しました

この記事では、React の fetch での cors クロスドメイン リクエストの実装方法を主に紹介しますので、参考にしてください。

プロジェクトでは React が使用されており、ajax の代わりに fetch を使用する必要があります。

react の create_react_app ツールは非常に便利なので、基本的にはプロジェクトを作成して npm start コマンドを入力すると、自動的にポート 3000 をリッスンし、フロントエンド部分の準備が整います。

具体的な参照: https://github.com/facebookincubator/create-react-app

バックエンド部分には halcon を使用しました。

フロントエンドとバックエンドが分離されているため、便宜上、nginxで同じドメインにしようとしました(フロントエンドAPIとバックエンドAPIのトップレベルドメイン名は同じです) ) ですが、palcon フレームワークはシングルエントリであり、react が nginx リバースプロキシ経由で 3000 を監視すると、js が問題を見つけることができませんでしたというエラーメッセージが表示されるため、同じドメインを共有する計画は断念しました。

そこで、2 つのドメイン名を設定しました:

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

最初のドメイン名は反応部分に使用され、ポート番号は 3000 (デバッグ用、正式な起動は 80)
2 番目のドメイン名は 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');
ログイン後にコピー

以下はフェッチ部分の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の時間コントロールで選択した時間が常に1日少ない問題を解決

IView の on-change 属性

の使い方の詳しい説明

以上がReactのfetchでのcorsクロスドメインリクエストの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート