ホームページ >PHPフレームワーク >Swoole >クロスドメイン処理に Hyperf フレームワークを使用する方法

クロスドメイン処理に Hyperf フレームワークを使用する方法

王林
王林オリジナル
2023-10-20 10:36:181619ブラウズ

クロスドメイン処理に Hyperf フレームワークを使用する方法

クロスドメイン処理に Hyperf フレームワークを使用する方法

クロスドメインとは、ブラウザがサーバーからリソースを要求するときに、同じオリジンをたどることを意味します。ユーザーデータのセキュリティを保護するためのポリシー。同一オリジン ポリシーでは、ブラウザが同じドメイン名、同じポート、同じプロトコルを持つサーバーにのみリクエストを送信できることが要求されます。ただし、場合によっては、アプリケーションが異なるドメイン名のサーバーにリソースを要求する必要があり、これにはクロスドメイン処理が必要になります。

Hyperf は、Swoole をベースにした高性能 PHP フレームワークで、強力なスケーラビリティと開発効率を提供するように設計されています。以下では、Hyperf フレームワークでクロスドメイン処理を実行する方法と具体的なコード例を紹介します。

  1. ミドルウェアを変更する
    Hyperf では、ミドルウェアを通じてクロスドメイン リクエストを処理できます。まず、クロスドメインリクエストを処理するための新しいミドルウェアを作成する必要があります。 app/Middleware ディレクトリに CorsMiddleware.php という名前のファイルを作成し、そのファイルに次のコードを記述します。
<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpMessageStreamSwooleStream;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
use PsrHttpServerMiddlewareInterface;
use PsrHttpServerRequestHandlerInterface;

class CorsMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $response = $handler->handle($request);
        // 设置允许跨域的域名,* 表示允许任意域名跨域
        $response = $response->withHeader('Access-Control-Allow-Origin', '*');
        // 设置允许的请求方法
        $response = $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
        // 设置允许的请求头
        $response = $response->withHeader('Access-Control-Allow-Headers', 'Content-Type,Authorization');
        // 设置是否允许带认证信息(例如cookie)的请求
        $response = $response->withHeader('Access-Control-Allow-Credentials', 'true');
        // 设置预检请求的缓存时间(秒)
        $response = $response->withHeader('Access-Control-Max-Age', '3600');
        return $response;
    }
}
  1. ミドルウェアの登録
    ミドルウェアを有効にするには、次のコードが必要です。グローバルミドルウェアリストに登録します。 config/autoload/middlewares.php ファイルを開き、$middlewares 配列を見つけて、CorsMiddleware::class を配列の先頭に追加します。
<?php

declare(strict_types=1);

return [
    'http' => [
        AppMiddlewareCorsMiddleware::class,
        // 其他中间件...
    ],
];
  1. ルーティングの構成
    最後に、 OPTIONS リクエストのルーティング追加処理を設定する必要があります。 config/routes.php ファイルを開き、次のコードをルート定義に追加します。
<?php

use HyperfHttpServerRouterRouter;

Router::addRoute(['OPTIONS'], '/{path:.+}', function () {
    return '';
});

このコードは、すべての OPTIONS リクエストをインターセプトし、空の応答を返します。

これまでに、Hyperf フレームワークでのクロスドメイン処理が完了しました。これで、アプリケーションは任意のドメイン名からのリクエストを受信し、適切なデータを返すことができるようになりました。

概要:
上記の手順を通じて、Hyperf フレームワークでクロスドメイン処理を実行する方法を理解しました。まず、クロスドメインリクエストを許可する関連リクエストヘッダー情報を設定するミドルウェアを作成しました。次に、ミドルウェアをグローバル ミドルウェア リストに登録し、OPTIONS リクエストの処理を設定しました。このようにして、アプリケーションはクロスドメインリクエストをスムーズに行うことができます。

コード例が示されており、実際のニーズに応じて変更および拡張できます。 Hyperf フレームワークの高いパフォーマンスと柔軟性により、クロスドメイン処理を含むさまざまな機能を簡単に開発できます。この記事が皆さんのお役に立てば幸いです。

以上がクロスドメイン処理に Hyperf フレームワークを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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