Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定する

クロスオリジンリソース共有 (CORS)

1.1 CORSとは何か

CORS (Cross-Origin Resource Sharing)、クロスオリジン リソース共有。 CORS は公式のクロスドメイン ソリューションです。クライアント側で特別な操作を必要とせず、サーバー側で完全に処理されるのが特徴です。get リクエストと post リクエストをサポートします。クロスオリジン リソース共有標準では、一連の HTTP ヘッダー フィールドが追加され、サーバーはブラウザーを通じてどのオリジンがどのリソースにアクセスできるかを宣言できるようになります。

1.2 CORS はどのように機能しますか?

CORS は、リクエストがドメインをまたぐことが許可されていることをブラウザに伝えるために、レスポンス ヘッダーを設定します。レスポンスを受信すると、ブラウザはレスポンスを解放します。

1.3 CORS は何の目的で使用されますか?

ここに画像の説明を挿入

ajaxデモ.html

<!DOCTYPE html>
<html lang="ja">

<ヘッド>
    <メタ文字セット="UTF-8">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>CORS</title>
    <スタイル>
        #結果 {
            幅: 200ピクセル;
            高さ: 100px;
            境界線: 実線 1px #90b;
        }
    </スタイル>
</head>

<本文>
    <button>リクエストを送信</button>
    <div id="結果"></div>
    <スクリプト>
        const btn = document.querySelector('ボタン');

        btn.onclick = 関数(){
            //1. オブジェクトを作成する const x = new XMLHttpRequest();
            //2. 初期化設定 x.open("GET", "http://127.0.0.1:8080/cors-server");
            //3. 送信 x.send();
            //4. イベントをバインドする x.onreadystatechange = function () {
                (x.readyState === 4)の場合{
                    (x.status >= 200 && x.status < 300) の場合 {
                        document.getElementById('result').innerText = x.response;
                    }
                }
            }
        }
    </スクリプト>
</本文>

</html>

ここに画像の説明を挿入

サーバー.js

//1. エクスプレスをインポートする
定数 express = require('express');

//2. アプリケーション オブジェクトを作成する const app = express();
 
//3. ルーティングルールを作成する // request はリクエストメッセージのカプセル化です // response はレスポンスメッセージのカプセル化です app.all('/cors-server', (request, response)=>{
    // レスポンス ヘッダーを設定します response.setHeader("Access-Control-Allow-Origin", "*"); // すべてのクロスドメイン リクエストを許可します* 
    // response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:5500"); // 指定されたリクエストがドメイン間をまたぐことを許可する // response.setHeader("Access-Control-Allow-Headers", '*'); // カスタム リクエスト ヘッダー タグを許可する // response.setHeader("Access-Control-Allow-Method", '*'); // すべてのリクエストがドメイン間をまたぐことを許可する *
    // response.setHeader("Access-Control-Allow-Method", 'get'); // ドメインを越えた get リクエストを許可する response.send('hello CORS');
});


//4. サービスを開始するためのリスニングポート app.listen(8080, () => {
    console.log("サービスが開始されました。ポート 8080 がリッスンしています...");
});

サービスnodemon server.jsを起動します

ここに画像の説明を挿入

実行結果:

ここに画像の説明を挿入

Ajax クロスドメイン ソリューションと、クロスドメイン ケースの詳細を実現するための CORS 応答ヘッダーの設定に関するこの記事はこれで終わりです。より関連性の高い Ajax クロスドメイン ソリューションのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 3レベルリンク省および市町村のAjaxコード
  • JSON、AJAX、Maven の基礎
  • Ajax ログイン検証実装コード
  • アヤックスは州、都市、地区間の連携を実現
  • シンプルなページング効果を実現するjQuery+Ajax
  • Ajax の予備実装 (vscode+node.js+express フレームワークを使用)
  • AJAX を使用して Django バックエンド データを取得する方法
  • Ajax の JavaScript ソリューションにおける parsererror エラー ケースの詳細な説明

<<:  MySQL における 8 つの一般的な SQL 使用例

>>:  VMware Workstation と vSphere 間で仮想マシンを移行する (画像とテキスト)

推薦する

CentOS SVN サーバーで複数のプロジェクトを管理する方法

一つの要求一般的に、企業には複数のプロジェクトがあります。SVN サーバーを設定した後は、プロジェク...

TypeScriptはvscodeを使用してコードのコンパイルプロセスを監視します

インストールtsコマンドをグローバルにインストールする npm install -g typescr...

Nginxは特定のページへのIPアクセスを制限します

1.すべてのIPアドレスが3つのページa1.htm、a2.htm、a3.htmにアクセスするのを禁止...

CSSの省略記号とパディングを組み合わせた場合の問題の詳細な説明

CSS によるテキストの切り捨てテキストを自動的に切り捨てるスタイル コードを実装するには、次のコー...

Web コンポーネントの内部イベント コールバックと問題点の分析

目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...

portainer を使用してリモート docker に接続するチュートリアル

Portainer は、Docker ホストと Docker Swarm クラスターの管理に使用でき...

Nginx 最適化サービスで Web ページ圧縮を実装する方法

リソースを節約するためにWebページの圧縮を設定する1.まず、設定を変更しましょう vim /usr...

React で setInterval 関数を使用する例

この記事はWindows 10のシステム環境をベースに、Reactの学習と使用について説明しています...

innerHTML を理解する

<br />関連記事: innerHTML HTML DOM insertRow() メ...

IE 環境での css-vars-ponyfill の使用に関する詳細な説明 (nextjs ビルド)

css-vars-ポニーフィルCSS 変数を使用して Web ページのスキニングを実現すると、互換...

Unicode署名BOMによる事故原因の分析

ここでは、通常ヘッダーとフッターに対して行われるインクルード ファイルを使用している可能性があります...

Dockerがプライベート倉庫Harborを構築する手順

港Harborは、エンタープライズレベルのプライベートDockerイメージリポジトリを構築するための...

MySQL のスケジュールされた完全なデータベースバックアップ

目次1. MySQLデータのバックアップ1.1、データをバックアップするためのmysqldumpコマ...

Vue.js スロットにおけるスコープ付きスロットの使用法の詳細な説明

目次スロットなしVue2.x スロットスロット付き名前付きスロットスロット属性なしスロットの簡単なサ...

Linux ネットワークプログラミングにおけるソケットオプションの実装

ソケットオプション機能機能: ソケットファイル記述子の属性の読み取りと設定に使用されるメソッド #i...