PHP はクロスドメイン要求とアクセス制御をどのように処理しますか?
要約:
インターネット アプリケーションの開発に伴い、クロスドメイン リクエストとアクセス制御が PHP 開発における重要な問題になっています。この記事では、開発者がこれらの問題をよりよく理解し、対処できるようにすることを目的として、PHP がクロスドメイン要求とアクセス制御を処理する方法とテクニックを紹介します。
2.1 JSONP (パディング付き JSON)
JSONP は、スクリプト タグを動的に作成してデータを取得する、クロスドメイン リクエストのソリューションです。サーバーから返されたデータはコールバック関数でラップする必要があり、ブラウザはこのコールバック関数を実行してサーバーから返されたデータを取得します。
2.2 CORS (Cross-Origin Resource Sharing)
CORS はサーバー側の設定をサポートするメカニズムで、サーバーがアクセスを許可するソースをブラウザーに伝えることができます。 PHP では、応答ヘッダー情報を設定することで CORS を実装できます。
3.1 JSONP ソリューション
PHP は、クライアントから送信されたコールバック パラメーターに基づいてデータを含む JavaScript コードを動的に生成できます。 :
<?php $data = array('name' => 'John', 'age' => 18); $callback = $_GET['callback']; echo $callback . '(' . json_encode($data) . ')'; ?>
3.2 CORS ソリューション
PHP は、応答ヘッダー情報を設定することで CORS を実装します。例:
<?php header("Access-Control-Allow-Origin: http://example.com");// 允许http://example.com域名访问 header("Access-Control-Allow-Methods: GET, POST, OPTIONS");// 允许GET、POST、OPTIONS方法 header("Access-Control-Allow-Headers: Content-Type");// 允许Content-Type请求头 ?>
4.1 資格情報
クロスドメイン要求で資格情報 (Cookie、HTTP 認証情報など) を送信する必要がある場合は、次の点に注意する必要があります。リクエスト側で「Access -Control-Allow-Credentials」を true に設定し、「withCredentials」を true に設定します。
4.2 プリフライト リクエスト (Preflight)
次の条件が満たされる場合、ブラウザはサーバーの許可情報を取得するためにプリフライト リクエスト (OPTIONS) を送信します。
PHP コードはプリフライト リクエストを処理し、正しい応答ヘッダー情報。
以上がPHP はクロスドメインリクエストとアクセス制御をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。