PHP で Ajax クロスドメインを実装する 3 つの方法を要約する
フロントエンドとバックエンドの分離の普及により、Web 開発ではフロントエンドがバックエンド インターフェイスを呼び出し、Ajax テクノロジを通じてデータを取得することが一般的な操作になりました。
ただし、ブラウザの同一オリジン ポリシーにより、異なるソース (異なるプロトコル、ドメイン名、またはポート) からの Web ページは相互に独自の DOM および Cookie にアクセスできません。そのため、クロスドメイン アクセスが非常に一般的な要件になります。 。この問題を解決する方法はたくさんあります。
この記事では、PHP で Ajax クロスドメインを実装する 3 つの方法を紹介します。
1. JSONP
JSONP (パディング付き JSON) は、フロントエンドがクロスドメイン リクエストを開始する場合に非常に人気のあるソリューションです。これは実際には、<script>
タグにはクロスドメイン アクセスを実現するためのクロスドメイン制限がないという事実を利用して、ブラウザを「騙す」方法です。その原理は、サーバー側でリクエストに応答するためのJavaScriptコードスニペットを動的に生成することであり、このコードスニペットは特定の名前(コールバック関数名)を持つJavaScript関数を呼び出し、サーバー側で処理されたデータをパラメータとして渡します。この機能により、クロスドメイン アクセスの効果が得られます。
JSONP の使用法は次のとおりです:
- クライアント コード:
function handleJsonp(data) { console.log(data); } const script = document.createElement('script'); script.src = 'http://example.com/api?callback=handleJsonp'; document.head.appendChild(script);
- サーバー コード:
<?php $data = array('foo' => 'bar'); $callback = $_GET['callback']; echo sprintf('%s(%s);', $callback, json_encode($data)); ?>
このコードでは、サーバーからの戻り結果は、コールバック関数呼び出しを含む JavaScript コード スニペットです。クライアントがデータを取得すると、自動的にコールバック関数が実行され、サーバーから返されたデータがパラメータとして使用されます。コールバック関数。
JSONP の利点は、優れた互換性です。互換性は、ブラウザが <script>
タグをサポートする範囲によってのみ制限されます。ただし、欠点は、セキュリティ上の問題があることです。コールバック関数はクライアント内にあるため、この関数が期待するロジックを実行するかどうかは保証できません。悪意のあるコールバック関数が悪意のあるコードを渡すと、XSS による攻撃を受ける危険性があります。
2. プロキシ モード
プロキシ モードは、もう 1 つの一般的なクロスドメイン ソリューションです。その基本的な考え方は、指定された URL にアクセスするためにサーバー上にプロキシを設定し、プロキシ サーバーから取得したデータをクライアントに返すことです。このようにして、クライアントは同じオリジンからプロキシ サーバーに直接アクセスでき、プロキシ サーバーはクロスドメイン ターゲット サーバーにアクセスして、ターゲット サーバーから返されたデータを転送します。
プロキシ モードは次のように使用されます:
- クライアント コード:
fetch('http://example.com/proxy_api') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
- サーバー コード:
<?php $url = 'http://example.com/api'; $data = json_decode(file_get_contents($url), true); echo json_encode($data); ?>
このコードでは、クライアントのリクエストがプロキシ サーバーに送信され、プロキシ サーバーはターゲット サーバーから返されたデータをクライアントに返すことで、クライアントのクロスドメイン サービスへのアクセスを実現します。
プロキシ モードの利点は、セキュリティが優れていることです。クライアントは同じソースからのみプロキシ サーバーにアクセスし、プロキシ サーバーはクロスドメイン ターゲット サーバーにアクセスするため、次のようなセキュリティが効果的に回避されます。クロスドメイン アクセス: リスクはありますが、追加のサーバー側コードを開発する必要があり、追加の作業と開発コストが追加されるという欠点があります。
3. CORS
CORS は、現在最も人気のあるクロスドメイン アクセス ソリューションです。サーバー側でレスポンスヘッダーを設定し、クロスドメインアクセスを許可するかどうかをクライアントに伝えることで、クロスドメインアクセスのセキュリティ制御を実現します。
CORS は次のように使用されます:
- クライアント コード:
fetch('http://example.com/api', { mode: 'cors' }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
- サーバー コード:
<?php header('Access-Control-Allow-Origin: *'); $data = array('foo' => 'bar'); echo json_encode($data); ?>
このコードでは、サーバーは Access-Control-Allow-Origin:*
応答ヘッダーを設定し、すべてのソースがインターフェイスへのアクセスを許可されていることを示します。クライアントはリクエストに mode を設定します: 'cors '
パラメータは、リクエストがドメインを越えてアクセスされることをブラウザに通知します。
CORS の利点は、ネイティブにサポートされ、追加の開発作業が必要ないことですが、欠点は、IE8/9 をサポートしておらず、サーバー側でサポートする必要があることです。サブドメイン名のクロスドメイン アクセス。
上記は、PHP で Ajax を実装するための 3 つのクロスドメイン方法です。実際のプロジェクトでは、特定の状況に応じて最適なクロスドメイン ソリューションを選択する必要があります。
以上がPHP で Ajax クロスドメインを実装する 3 つの方法を要約するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
