概要
is_allowed_http_origin
フィルタは、リクエスト元のオリジンが有効か調べる際に使用されるフィルタです。このフィルタは主に、CORS(Cross-Origin Resource Sharing)を考慮したウェブアプリケーションやAPIと連携する場合に利用されます。具体的には、以下のような機能を実装する際によく使われます。
- 複数のドメインからのリクエストを受け付けるAPIの実装
- 特定のドメインに対してのみリソースへのアクセスを許可する場合
- AJAXリクエストに対するCORS設定
- WordPress REST APIの安全性を向上させる
- プラグインやテーマによる外部リソースとの統合
- クライアントサイドのセキュリティ制御
- モバイルアプリや外部サービスからのリクエスト管理
- ウェブアプリケーションファイアウォールの設定
構文
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
フィルタに関する解説とサンプルコードになります。