函数文档

send_origin_headers()

💡 云策文档标注

概述

send_origin_headers() 函数用于处理跨域资源共享(CORS)请求,根据请求来源是否被允许发送相应的 HTTP 头部。如果是 OPTIONS 请求,它会直接退出脚本并发送头部或返回 403 状态码;对于其他请求方法,则返回来源 URL 或 false。

关键要点

  • 函数检查当前请求的 HTTP Origin 是否被允许,使用 is_allowed_http_origin() 进行验证。
  • 如果 Origin 被允许,发送 Access-Control-Allow-Origin 和 Access-Control-Allow-Credentials 头部。
  • 对于 OPTIONS 请求,如果 Origin 不被允许,返回 403 状态码并退出;否则直接退出。
  • 对于非 OPTIONS 请求,返回 Origin URL(如果头部已发送)或 false(如果未发送)。
  • 函数在 WordPress 3.4.0 版本中引入。

代码示例

function send_origin_headers() {
	$origin = get_http_origin();

	if ( is_allowed_http_origin( $origin ) ) {
		header( 'Access-Control-Allow-Origin: ' . $origin );
		header( 'Access-Control-Allow-Credentials: true' );
		if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) {
			exit;
		}
		return $origin;
	}

	if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) {
		status_header( 403 );
		exit;
	}

	return false;
}

注意事项

  • 此函数主要用于处理 CORS 预检请求(OPTIONS 方法),开发者应确保在适当场景下调用,例如在自定义 API 或主题定制器中。
  • 相关函数包括 get_http_origin()、is_allowed_http_origin() 和 status_header(),用于获取 Origin、验证允许性和设置状态码。
  • 函数被 WP_Customize_Manager::setup_theme() 使用,以支持主题预览和定制功能。

📄 原文内容

Sends Access-Control-Allow-Origin and related headers if the current request is from an allowed origin.

Description

If the request is an OPTIONS request, the script exits with either access control headers sent, or a 403 response if the origin is not allowed. For other request methods, you will receive a return value.

Return

string|false Returns the origin URL if headers are sent. Returns false if headers are not sent.

Source

function send_origin_headers() {
	$origin = get_http_origin();

	if ( is_allowed_http_origin( $origin ) ) {
		header( 'Access-Control-Allow-Origin: ' . $origin );
		header( 'Access-Control-Allow-Credentials: true' );
		if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) {
			exit;
		}
		return $origin;
	}

	if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) {
		status_header( 403 );
		exit;
	}

	return false;
}

Changelog

Version Description
3.4.0 Introduced.