函数文档

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

Return

string Origin URL if allowed, empty string if not.

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.