現代のネットワーク技術の継続的な発展により、Web アプリケーションは人々の日常生活に不可欠な部分になりました。ただし、Web アプリケーションのセキュリティ制限とブラウザの同一生成元ポリシーの制限により、これらのアプリケーションはデータを操作する際にいくつかの困難に直面します。最も一般的な問題の 1 つは、クロスドメインのデータ対話です。
クロスドメインのデータ対話では、Web アプリケーションはさまざまなソースからデータを取得して操作する必要があります。 CORS (Cross-Origin Resource Sharing) や JSONP (JSON with Padding) などのクロスドメイン テクノロジーは最新のブラウザーですでにサポートされていますが、場合によっては、Web 開発で一般的に使用されるバックエンド言語として PHP が依然としてサポートされている必要があります。非常に重要な役割を果たしており、クロスドメインのデータ対話を実現するために重要な役割を果たしています。
この記事では、PHP を使用してクロスドメインのデータ対話を実現する方法を紹介し、いくつかの一般的なソリューションについて説明します。
PHP を使用してクロスドメイン データ インタラクションの実装を開始する前に、まずクロスドメイン データ インタラクションの種類を理解する必要があります。
CORS (Cross-Origin Resource Sharing) は、Web アプリケーションがさまざまなソースからデータにアクセスできるようにする、最新のブラウザーでサポートされているメカニズムです。 CORS クロスドメイン リクエストは、事前定義された標準 HTTP ヘッダーを介してリクエストが許可されるかどうかをブラウザーに伝えます。 CORS クロスオリジン要求の場合、サーバーは応答に特定の応答ヘッダーを追加して、どの要求が受け入れられるかをブラウザーに伝える必要があります。
JSONP (JSON with Padding) は、ブラウザーの同一オリジン ポリシーをバイパスできるテクノロジーであり、タグの src 属性が制限されないという事実を利用します。同一生成元ポリシー。 JSONP リクエストはブラウザーによってクロスドメインリクエストとはみなされないため、他のドメインのデータに直接アクセスできます。
JSONP リクエストの原則は、script タグをページに追加し、タグの src 属性が URL を指すことです。 URL はサーバーによって提供され、JavaScript コードを返します。コードが実行されると、指定されたコールバック関数が呼び出され、サーバーから返されたデータがパラメーターとしてコールバック関数に渡されます。
JSONP はシンプルさと使いやすさが特徴ですが、XSS (クロスサイト スクリプティング攻撃) に対して脆弱です。
さらに、透明画像 (Transparent Image)、クロスフレーム メッセージング (Cross Document Messaging) など、他のいくつかのクロスドメイン データ インタラクション テクノロジーもあります。しかし、これらの技術はまだ成熟しておらず、使用条件も厳しいため、実際の開発ではあまり活用されていません。
実際の開発では、状況に応じてさまざまなクロスドメイン テクノロジを使用できます。いくつかの一般的な PHP クロスドメイン テクノロジを以下に紹介します。
PHP で CORS を使用するには、応答ヘッダーを設定する必要があります。たとえば、すべてのドメイン名にサーバー上のデータへのアクセスを許可するには、次のコードを使用できます。
header("Access-Control-Allow-Origin: *");
特定のドメイン名のみにサーバー上のデータへのアクセスを許可する場合は、次のコードを使用できます。
header("Access-Control-Allow-Origin: http://example.com");
http://example.com は、サーバー上のデータへのアクセスを許可するドメイン名です。
クロスドメイン アクセスに Cookie を使用する必要がある場合は、サーバー側で Access-Control-Allow-Credentials を true に設定する必要もあることに注意してください。例:
header('Access-Control-Allow-Origin: http://example.com'); header('Access-Control-Allow-Credentials: true');
CORS とは異なり、JSONP クロスドメイン リクエストはスクリプト タグを追加することで実装されます。 PHP では、データを JavaScript コードにラップし、クライアントが提供するコールバック関数名に従ってデータを返すときにコールバック関数を呼び出す必要があります。例:
<?php $data = array("name" => "John", "age" => 30); $callback = $_GET['callback']; echo $callback . '(' . json_encode($data) . ')'; ?>
上記のコードでは、$_GET['callback'] はクライアントによって提供されたコールバック関数名を取得します。
サーバーがデータを返すときは、データを JavaScript コードに正しくラップしてコールバック関数を呼び出す必要があることに注意してください。そうしないと、クライアントはデータを正しく受信できません。
一般的に使用されるバックエンド言語として、PHP はさまざまなクロスドメイン データ交換ソリューションを提供します。実際の開発では、特定のニーズに基づいて適切なソリューションを選択する必要があります。クロスドメインのデータ対話を扱うときは、クロスサイト スクリプティング攻撃などのセキュリティ問題を回避するために、セキュリティ問題に注意する必要があることに注意してください。
以上がPHP がクロスドメイン データ インタラクションを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。