概要
send_origin_headers
フィルタは、リクエスト元に応じて Access-Control-Allow-Origin
ヘッダーを送信する際に利用されます。このフィルタは、外部のクライアントが WordPress サイトに対してクロスオリジンリクエストを行う際のセキュリティを強化し、特定のオリジンからのリクエストだけに許可を与えるために使用されます。
このフィルタは、主に以下の8つの機能を実装する際に役立ちます:
- APIエンドポイントへのアクセス管理
- サードパーティサービスとの連携
- モバイルアプリからのデータ取得
- マルチサイトインストールでのドメイン制限
- フロントエンドでのJavaScriptフレームワーク使用
- OAuth認証フローの実装
- Webhooksの処理
- クラウドサービスとのインテグレーション
構文
add_filter( 'send_origin_headers', 'my_custom_origin_header' );
パラメータ
$origin
: リクエスト元のオリジン(URL)。
戻り値
- リクエスト元に応じた
Access-Control-Allow-Origin
ヘッダーを設定した結果を返す。
関連する関数
https://refwp.com/?titleonly=1&s=send_origin_headers
使用可能なバージョン
このフィルタは、WordPress 4.4以降で利用可能です。
コアファイルのパス
wp-includes/rest-api/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
add_filter( 'send_origin_headers', function( $origin ) {
return 'https://example.com'; // 指定したオリジンからのリクエストを許可
});
このコードは、Access-Control-Allow-Origin
ヘッダーを https://example.com
に設定します。
サンプルコード2
add_filter( 'send_origin_headers', function( $origin ) {
if ( strpos( $origin, 'https://trusteddomain.com' ) === 0 ) {
return $origin; // 信頼されたドメインのみ許可
}
return null; // その他のドメインは拒否
});
信頼されたドメインがリクエスト元の場合のみ、そのオリジンを許可します。
サンプルコード3
add_filter( 'send_origin_headers', function( $origin ) {
// 環境変数からオリジンを取得
return getenv( 'MY_SITE_ORIGIN' );
});
このコードは、環境変数からオリジンを取得し、Access-Control-Allow-Origin
ヘッダーとして設定します。
サンプルコード4
add_filter( 'send_origin_headers', function( $origin ) {
// アクセス元に応じた異なるオリジンを返す
return in_array( $origin, ['https://domain1.com', 'https://domain2.com'] ) ? $origin : null;
});
特定のドメインだけを許可し、その他は拒否するためのコードです。
サンプルコード5
add_filter( 'send_origin_headers', function( $origin ) {
return 'https://mywebsite.com'; // 特定のサイトからのリクエストを許可
});
このコードは、Access-Control-Allow-Origin
ヘッダーを https://mywebsite.com
に簡潔に設定するサンプルです。