ホームページ  >  記事  >  バックエンド開発  >  PHP ヘッダーを使用してスリム PHP フレームワークの CORS を有効にする方法

PHP ヘッダーを使用してスリム PHP フレームワークの CORS を有効にする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 04:40:02869ブラウズ

How to Enable CORS for Slim PHP Framework Using PHP Headers?

.htaccess で Slim PHP フレームワークの CORS を有効にする

で作成された RESTful サービスのクロスオリジン リソース共有 (CORS) を有効にするにはSLIM PHP フレームワークでは、.htaccess ファイルへの変更が一般的に使用されます。ただし、.htaccess で推奨される変更を行った後も問題が解決しない場合は、別のアプローチを採用できます。

PHP ヘッダーの使用

.htaccess で CORS ヘッダーを設定する代わりに、PHP コード、具体的にはindex.php ファイルで直接実行できます。ファイルの先頭に次のコードを追加すると、アプリケーションが受信するすべての HTTP リクエストに対して CORS ヘッダーが設定されます:

<code class="php">// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
    // should do a check here to match $_SERVER['HTTP_ORIGIN'] to a
    // whitelist of safe domains
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

}</code>

OPTIONS リクエストの処理

SLIM PHP フレームワークを使用している場合は、OPTIONS リクエストの処理も必要になる場合があります。次のルートを $app オブジェクトに追加して、OPTIONS リクエストが HTTP 200 応答を確実に受信できるようにします。

<code class="php">// return HTTP 200 for HTTP OPTIONS requests
$app->map('/:x+', function($x) {
    http_response_code(200);
})->via('OPTIONS');</code>

これらの PHP の変更により、.htaccess で CORS ヘッダーを設定する代替手段が提供されます。両方のコード ブロックをindex.php ファイルに追加すると、SLIM PHP RESTful サービスの CORS を有効にすることができます。

以上がPHP ヘッダーを使用してスリム PHP フレームワークの CORS を有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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