ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp でクロスドメインリクエストを完了する方法

thinkphp でクロスドメインリクエストを完了する方法

PHPz
PHPzオリジナル
2023-04-12 09:04:331036ブラウズ

フロントエンドとバックエンドの分離開発の人気に伴い、クロスドメインリクエストはますます一般的な要件になってきています。 thinkphp フレームワークを使用して開発する場合、クロスドメイン リクエストのバックグラウンド コントローラー メソッドを実装するにはどうすればよいですか?この記事では、thinkphp フレームワークに付属する Header クラスとサードパーティ ライブラリを使用して、クロスドメイン リクエストを完了する方法を紹介します。

1. Header クラス

thinkphp フレームワークでは、Header クラスを使用して応答ヘッダーを設定し、クロスドメイン リクエスト機能を実現できます。具体的な方法は、コントローラー メソッドに次のコードを追加することです。

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

このうち、コードの最初の行は、すべてのソースからのクロスドメイン リクエストが許可されること、または特定のソースに設定できることを示しています。 ; コードの 2 行目は、クロスドメイン要求が許可されていることを示しています。 要求によって伝送される要求ヘッダー情報。これを設定した後、基本的なクロスドメイン リクエストを実装できます。

2. サードパーティ ライブラリ

Header クラスを使用してクロスドメイン リクエストを設定するだけでなく、サードパーティ ライブラリを使用してこのプロセスを簡素化することもできます。以下では、主流の CORS (Cross-Origin Resource Sharing) ライブラリ cors 拡張を例として、サードパーティ ライブラリを使用してクロスドメイン リクエストを実装する方法を紹介します。

  1. cors 拡張機能のインストール

コマンド ライン ウィンドウを開き、次のコマンドを実行します:

composer require topthink/think-cors
  1. cors 拡張機能の構成

プロジェクトの config フォルダーで cors.php ファイルを作成し、次のコードを入力します:

<?php

return [
    // 允许的请求域名
    &#39;allow_origin&#39;      => ['*'],
    // 允许的请求头信息
    'allow_headers'     => 'Origin, X-Requested-With, Content-Type, Accept',
    // 允许的请求方法
    'allow_methods'     => 'GET, POST, PUT, DELETE, PATCH',
    // 是否允许发送cookie
    'allow_credentials' => true,
    // 跨域请求缓存时间
    'max_age'           => 3600,
];

このうち、$allow\_origin は許可されたリクエスト ドメイン名を表し、次のように設定できます。特定のドメイン名またはセット ワイルドカード「*」です。$allow\_headers は許可されたリクエスト ヘッダー情報を表し、$allow\_methods は許可されたリクエスト メソッドを表し、$allow\_credentials は Cookie の送信が許可されているかどうかを表します。 max\_age は、クロスドメイン要求のキャッシュ時間を表します。

  1. 構成ファイルを変更します

プロジェクトの config フォルダーで app.php ファイルを見つけます。構成は次のとおりです:

return [
    // ...
    'middleware' => [
        // ...
        \think\middleware\Cors::class,
    ],
];
  1. cors 拡張機能の呼び出し

クロスドメイン リクエストを必要とするコントローラー メソッドでは、cors 拡張機能のメソッドを直接呼び出して、クロスドメイン リクエストの設定を実現できます:

use think\facade\Cors;

public function index() {
    Cors::allowAllOrigin();
    return json(['code' => 200, 'msg' => 'success']);
}

これを設定すると、クロスドメインリクエストを実装できるようになります。

要約すると、thinkphp フレームワークのクロスドメイン リクエスト バックグラウンド コントローラー メソッドを実装するには、Header クラスまたはサードパーティ ライブラリを使用できます。 Header クラスを使用して応答ヘッダー情報を手動で設定し、サードパーティのライブラリを使用して設定プロセスを簡素化します。具体的な実装方法は、ニーズに応じて選択できます。

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

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