is_allowed_http_origin()
云策文档标注
概述
is_allowed_http_origin() 函数用于检查 HTTP origin 是否在允许列表中,常用于跨域资源共享(CORS)场景。它接受一个可选的 origin 参数,若未提供则使用 get_http_origin() 获取当前请求的 origin。
关键要点
- 函数返回允许的 origin URL 或空字符串,表示是否授权
- 参数 $origin 可选,默认为 null,此时自动调用 get_http_origin()
- 内部通过 get_allowed_http_origins() 获取允许的 origin 列表进行比对
- 提供 allowed_http_origin 过滤器钩子,允许开发者修改结果
- 主要用于 send_origin_headers() 函数,以发送 CORS 头信息
代码示例
function is_allowed_http_origin( $origin = null ) {
$origin_arg = $origin;
if ( null === $origin ) {
$origin = get_http_origin();
}
if ( $origin && ! in_array( $origin, get_allowed_http_origins(), true ) ) {
$origin = '';
}
/**
* Changes the allowed HTTP origin result.
*
* @since 3.4.0
*
* @param string $origin Origin URL if allowed, empty string if not.
* @param string $origin_arg Original origin string passed into is_allowed_http_origin function.
*/
return apply_filters( 'allowed_http_origin', $origin, $origin_arg );
}注意事项
- 函数自 WordPress 3.4.0 版本引入,确保兼容性
- 使用严格模式(in_array 的第三个参数为 true)进行 origin 比对,避免类型转换问题
- allowed_http_origin 过滤器可用于自定义授权逻辑,例如动态添加允许的 origin
原文内容
Determines if the HTTP origin is an authorized one.
Parameters
$originstring|nulloptional-
Origin URL. If not provided, the value of get_http_origin() is used.
Default:
null
Source
function is_allowed_http_origin( $origin = null ) {
$origin_arg = $origin;
if ( null === $origin ) {
$origin = get_http_origin();
}
if ( $origin && ! in_array( $origin, get_allowed_http_origins(), true ) ) {
$origin = '';
}
/**
* Changes the allowed HTTP origin result.
*
* @since 3.4.0
*
* @param string $origin Origin URL if allowed, empty string if not.
* @param string $origin_arg Original origin string passed into is_allowed_http_origin function.
*/
return apply_filters( 'allowed_http_origin', $origin, $origin_arg );
}
Hooks
- apply_filters( ‘allowed_http_origin’, string $origin, string $origin_arg )
-
Changes the allowed HTTP origin result.
Changelog
| Version | Description |
|---|---|
| 3.4.0 | Introduced. |