发送“Allow”标头以声明可以发送到当前路由的所有方法。

原型

rest_send_allow_header( WP_REST_Response $response, WP_REST_Server $server, WP_REST_Request $request )

参数

$response (WP_REST_Response) (Required) 当前的响应正在服务。

$server (WP_REST_Server) (Required) ResponseHandler实例(通常是WP_REST_Server)。

$request (WP_REST_Request) (Required) 用于进行当前响应的请求。

返回值

(WP_REST_Response)  响应将被提供,如果路由允许方法,则使用“允许”标头。

源文件

路径:wp-includes/rest-api.php

<?php
...
function rest_send_allow_header( $response, $server, $request ) {
	$matched_route = $response->get_matched_route();
	if ( ! $matched_route ) {
		return $response;
	}
	$routes = $server->get_routes();
	$allowed_methods = array();
	// Get the allowed methods across the routes.
	foreach ( $routes[ $matched_route ] as $_handler ) {
		foreach ( $_handler['methods'] as $handler_method => $value ) {
			if ( ! empty( $_handler['permission_callback'] ) ) {
				$permission = call_user_func( $_handler['permission_callback'], $request );
				$allowed_methods[ $handler_method ] = true === $permission;
			} else {
				$allowed_methods[ $handler_method ] = true;
			}
		}
	}
	// Strip out all the methods that are not allowed (false values).
	$allowed_methods = array_filter( $allowed_methods );
	if ( $allowed_methods ) {
		$response->header( 'Allow', implode( ', ', array_map( 'strtoupper', array_keys( $allowed_methods ) ) ) );
	}
	return $response;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/rest_send_allow_header/