ホームページ > バックエンド開発 > PHPチュートリアル > CORS 構成に .htaccess ではなく PHP を選択する理由

CORS 構成に .htaccess ではなく PHP を選択する理由

Patricia Arquette
リリース: 2024-10-31 19:46:29
オリジナル
524 人が閲覧しました

Why Choose PHP Over .htaccess for CORS Configuration?

.htaccess と PHP での CORS の構成

Angular.js を使用してクロスオリジン アプリケーションを開発する場合は、CORS を有効にする必要があります(Cross-Origin Resource Sharing) により、異なるオリジンからのリクエストが許可されます。 .htaccess は CORS を設定するための一般的な方法ですが、期待どおりに動作しない場合があります。

ユーザーの .htaccess 設定に従って、次のヘッダーを追加する必要があります:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
ログイン後にコピー

ただし、Angular アプリケーションでまだエラーが発生しています。静的ファイルの .htaccess 構成がすでに設定されているため、ユーザーは PHP を使用した別のアプローチを検討することにしました。

index.php ファイルに、次のコードが追加されます:

<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>
ログイン後にコピー

Slim が使用されているフレームワークであるため、OPTIONS リクエストを処理するために追加のルートが追加されます:

<code class="php">// return HTTP 200 for HTTP OPTIONS requests
$app->map('/:x+', function($x) {
    http_response_code(200);
})->via('OPTIONS');</code>
ログイン後にコピー

.htaccess の代わりに PHP で CORS 設定を実装することで、ユーザーはクロスオリジン リクエストの問題を正常に解決します。これで、Angular アプリケーションは RESTful サービスにリクエストを行うことができます。

以上がCORS 構成に .htaccess ではなく PHP を選択する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート