Reactでプロキシを有効にする2つの実用的な方法

Reactでプロキシを有効にする2つの実用的な方法

プロキシを有効にする2つの方法

React には、直接使用できるカプセル化された Ajax リクエスト コードがありません。対話する場合、Ajax コードを自分でカプセル化するか、サードパーティの Ajax ライブラリを使用する必要があります。通常は、axios (軽量) を使用します。

なぜエージェントが必要なのでしょうか?

例えば、ローカルにポート 5000 のサーバーを書いているときに、ポート 3000 経由でリクエストを行うと、クロスドメインの問題 (ポート 3000 の本来の ajax エンジンがレスポンスを傍受する) が発生します。このとき、プロキシを使用することで問題を解決できます。プロキシとは、情報を送信するためのツールです。ポート 3000 のリクエストは、ポート 3000 で開かれたプロキシに送信され、プロキシはそれをポート 5000 のサーバーに転送します。応答の際、プロキシには Ajax エンジンがないため、応答を受信して​​からポート 3000 で開かれたスキャフォールディングに渡すことができ、クロスドメインの問題を解決できます。

Reactでプロキシを開く2つの方法

方法1

package.json ファイルに "proxy": "https://localhost:5000" を追加します。その後、ポート 3000 で利用できないリソースがポート 5000 で見つかるようになります。つまり、ポート 3000 に送信された要求はポート 5000 上のサーバーに転送されますが、要求されたオブジェクトがすでにポート 3000 で利用可能な場合は、ポート 5000 に転送されません。

この方法では 1 つしか見つかりませんが、ポート 5000 だけでなく他のポート番号も見つけたい場合 (複数のプロキシを構成する場合) は、次の方法を使用する必要があります。

方法2

srcにsetupProxyファイルを追加し(React scaffoldingがこのファイルを見つけます)、次のコードをコピーします。

設定後、リクエストが以前に送信されたアドレス localhost:3000 に /api1 を追加する必要があります。これは、要求されたリソースがポート 3000 で見つからない場合、api1 によって設定されたプロキシがポート 5000 へのアクセスに使用されることを意味します。複数のプロキシを設定する場合は、カンマで区切ります。

changeOrigin は、サーバーが受信する応答ヘッダー内の Host フィールドの値を制御するために使用されます。ここで、デフォルト値が false の場合、サーバーはリクエストがポート 3000 から送信されたと認識しますが、値が true に設定されている場合、サーバーはリクエストがポート 5000 から送信されたと認識します (実際はそうではありません)。これを書く必要はありませんが、書いたほうがよいでしょう。

リクエスト パスは、pathWrite 中に書き換えられます。実際には、プロキシは最初は /api を通じて見つかりますが、プロキシがポート 5000 にリクエストを行う場合は、https://localhost:3000/api/student のように /api を削除する必要があります。api を削除しないと、リクエスト アドレスは /api/students と同等になりますが、実際にリクエストするアドレスは /student である必要があります。

const proxy = require('http-proxy-middleware');
​
module.exports = 関数 (アプリ) {
    アプリを使用する(
        プロキシ('/api1', {
            ターゲット: 'http://localhost:5000',
              changeOrigin: true, // デフォルト値は false
            パス書き換え: { '^/api1': '' }
         })、
        プロキシ('/api2', {
            ターゲット: 'http://localhost:5001',
            changeOrigin: true, // デフォルト値は false
            パス書き換え: { '^/api2': '' }
       })、
   )
}

要約する

これで、React でプロキシを有効にする 2 つの方法についての記事は終了です。React でプロキシを有効にする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  CentOS 6 は Docker を使用して Zookeeper 操作例を展開します

>>:  MySql クイック挿入数千万の大規模データの例

推薦する

JavaScriptはランダムコードの生成と検証を実現する

JavaScriptでのランダムコードの生成と検証は参考までに。具体的な内容は以下のとおりです。イベ...

要素テーブルからヘッダーを削除する方法

show-header属性を使用したドキュメントのヒントshow-header <el-テーブ...

SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)

序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...

ドメイン名を介してプロジェクトにアクセスするnginx + tomcatの例

ドメイン名を使ってプロジェクトにアクセスする方法が気になったのですが、自分でドメイン名を取得するのは...

インデックススキャンを使用したMySQLソート

目次sakilaをインストールするインデックススキャンソートテーブル構造インデックススキャンをソート...

Linux システムで Centos7 を使って ElasticSearch ミドルウェアと共通インターフェースを構築するデモ

1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...

NginxとLuaによるグレースケールリリースの実装

memcachedをインストールする yum インストール -y memcached #memcac...

Dockerコンテナでユーザーを切り替えるときに権限が不足する問題を解決する方法

Docker コンテナでユーザーを切り替えると、権限が不十分であるというメッセージが表示されます。解...

ウェブページを作成する際に注意すべき点

--ホームページのバックアップ1.txtテキスト2. 画像をスキャンする3. PSDデザイン原画(A...

構造とプレゼンテーションの分離を理解するためのWeb標準の学習

Web 標準について議論するときに必ず話題になるのは、構造とプレゼンテーションを分離することの重要性...

FileZilla Server の FTP サーバー構成と 425 エラーおよび TLS 警告の解決策の詳細な説明

123WORDPRESS.COM では、FileZilla のダウンロード リンクを提供しています:...

MySQL 権限昇格のさまざまな形態の概要

目次1. Webshel​​lを書く出力ファイルにシェルを書き込むログファイル書き込みシェル2. U...

CSS ファンタスティックボーダーアニメーション効果の実装

今日、私はブログサイト shoptalkshow を閲覧していて、非常に興味深いこのインターフェース...

Web デザインの経験: 独善的な Web デザイナー

1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...

js 学習ノート: class、super、extends キーワード

目次序文1. es6の前にオブジェクトを作成する2. es6 後のクラス宣言3. クラスの継承4. ...