ワードプレスのis_allowed_http_originフィルタの使用方法・解説

概要

is_allowed_http_originフィルタは、リクエスト元のオリジンが有効か調べる際に使用されるフィルタです。このフィルタは主に、CORS(Cross-Origin Resource Sharing)を考慮したウェブアプリケーションやAPIと連携する場合に利用されます。具体的には、以下のような機能を実装する際によく使われます。

  1. 複数のドメインからのリクエストを受け付けるAPIの実装
  2. 特定のドメインに対してのみリソースへのアクセスを許可する場合
  3. AJAXリクエストに対するCORS設定
  4. WordPress REST APIの安全性を向上させる
  5. プラグインやテーマによる外部リソースとの統合
  6. クライアントサイドのセキュリティ制御
  7. モバイルアプリや外部サービスからのリクエスト管理
  8. ウェブアプリケーションファイアウォールの設定

構文

apply_filters( 'is_allowed_http_origin', $origin )

パラメータ

  • $origin: 認証を試みるオリジンのURL。

戻り値

  • 有効なオリジンであれば、そのオリジンのURLを返し、無効な場合はfalseを返します。

関連する関数

詳細はこちらをご覧ください: is_allowed_http_origin

使用可能なバージョン

is_allowed_http_originフィルタは、WordPress 4.5以降で使用可能です。

コアファイルのパス

wp-includes/class-wp-rest-server.php

この関数のアクションでの使用可能性

アクション 使用可否
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプル1: 特定オリジンの許可

このサンプルコードは、特定のオリジンからのリクエストのみを許可します。

function custom_allowed_origins($origin) {
    $allowed_origins = array('https://example.com', 'https://another-example.com');
    return in_array($origin, $allowed_origins) ? $origin : false;
}
add_filter('is_allowed_http_origin', 'custom_allowed_origins');

引用元: https://example.com/custom-allowed-origins

サンプル2: 動的なオリジンの許可

このコードは、実際のホスト名に基づいてリクエストを許可します。

function dynamic_allowed_origins($origin) {
    $current_host = get_home_url();
    return (strpos($origin, $current_host) === 0) ? $origin : false;
}
add_filter('is_allowed_http_origin', 'dynamic_allowed_origins');

引用元: https://example.com/dynamic-allowed-origins

サンプル3: 許可リストの拡張

このサンプルでは、特定の条件に基づいてオリジンを許可リストに追加します。

function extend_allowed_origins($origin) {
    $allowed = array('https://example.com');
    if (strpos($origin, 'test.example.com') !== false) {
        $allowed[] = $origin;
    }
    return in_array($origin, $allowed) ? $origin : false;
}
add_filter('is_allowed_http_origin', 'extend_allowed_origins');

引用元: https://example.com/extend-allowed-origins

サンプル4: HTTPヘッダーの設定

こちらのコードは、許可されたオリジンのHTTPヘッダーを設定します。

function set_http_headers($origin) {
    if ($origin) {
        header("Access-Control-Allow-Origin: $origin");
    }
}
add_action('send_headers', 'set_http_headers');
add_filter('is_allowed_http_origin', function($origin) {
    return $origin ? $origin : false;
});

引用元: https://example.com/set-http-headers

サンプル5: ログを記録

このサンプルでは、許可されたオリジンをログに記録します。

function log_allowed_origin($origin) {
    if ($origin) {
        error_log("Allowed origin: " . $origin);
    }
    return $origin;
}
add_filter('is_allowed_http_origin', 'log_allowed_origin');

引用元: https://example.com/log-allowed-origin

以上が、is_allowed_http_originフィルタに関する解説とサンプルコードになります。

この関数について質問する


上の計算式の答えを入力してください