ホームページ >バックエンド開発 >PHPチュートリアル >PHP で API が JSONP リクエストとクロスサイトリクエストを処理する方法

PHP で API が JSONP リクエストとクロスサイトリクエストを処理する方法

PHPz
PHPzオリジナル
2023-06-17 10:37:091334ブラウズ

ますます多くの Web アプリケーションがクロスサイト リクエストと JSONP テクノロジをサポートし始めるため、PHP の API 設計者はこれらのリクエストを処理する方法を検討する必要があります。この記事では、PHP で JSONP リクエストとクロスサイトリクエストを処理する方法を説明します。

まず、JSONP について見てみましょう。 JSONP (JSON with Padding) は、クライアントとサーバー間のデータのクロスドメイン要求を可能にするテクノロジーです。これは、JavaScript コードを使用して 3f1c4e4b6b16bbbd69b2ee476dc4f83a タグを動的に作成し、その src 属性が JSONP 応答を返す API を指す URL であることによって行われます。

JSONP をサポートするには、API にコードを追加する必要があります。まず、API リクエストに、クライアントで実行されるコールバック関数の名前を指定する「callback」パラメータが付いているかどうかを確認する必要があります。このパラメーターが存在する場合は、応答内でコールバック関数を使用して JSON 応答をラップする必要があります。こうすることで、クライアント側の JavaScript コードは、クロスドメインの制限を気にすることなく、応答を簡単に読み取って処理できます。

以下は、JSONP をサポートする方法を示す PHP サンプル コードです:

<?php
$data = array('name' => 'John', 'age' => 30);
$json = json_encode($data);

if(isset($_GET['callback'])){
    echo $_GET['callback'] . '(' . $json . ')';
} else {
    echo $json;
}
?>

上の例では、API リクエストに「callback」パラメータが含まれている場合は、JSONP レスポンスが返されます。それ以外の場合は、JSONP レスポンスが返されます。 、JSON 応答が返されます。

次に、クロスサイトリクエストを処理する方法を見てみましょう。 Cross-Origin Resource Sharing (CORS) は、クライアント ブラウザとサーバー間のクロスドメイン リクエストを可能にするテクノロジーです。 CORS を使用すると、プロキシ サーバーや他のソリューションを必要とせずに、クライアント側の JavaScript コードで別のドメインの API からデータを取得できます。

PHP で CORS を有効にするのは非常に簡単です。応答ヘッダーにいくつかの情報を追加するだけです。例:

<?php
header("Access-Control-Allow-Origin: *"); //允许所有域名
header("Access-Control-Allow-Methods: GET, POST"); //允许的HTTP方法
header("Access-Control-Allow-Headers: Content-Type"); //允许客户端发送的Header
?>

上の例では、"Access-Control-Allow-Origin"、"Access-Control-Allow-Methods"、および "Access-Control-Allow-Headers" を応答ヘッダーに追加します。 . CORS を有効にします。このようにして、クライアントは任意のドメイン名からデータを取得できますが、HTTP メソッドとヘッダーも制限されます。

つまり、PHP の API 設計者は、クライアント JavaScript コードが他のドメイン名からデータを取得できるように、JSONP と CORS をサポートする方法を検討する必要があります。 JSONP と CORS は両方とも、安全で信頼性の高いクロスサイト要求メソッドを提供し、クライアント コードをより柔軟にし、開発と保守を容易にすることができます。

以上がPHP で API が JSONP リクエストとクロスサイトリクエストを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。