Make WordPress Core


Ignore:
Timestamp:
06/28/2023 05:37:52 PM (22 months ago)
Author:
kadamwhite
Message:

REST API: Expose current $request object to cors_header filters in WP_REST_SERVER->serve_request().

Allows headers to be more easily set on a per-response basis when more or less security is needed on a specific route.

Props bor0, rachelbaker, spacedmonkey, chaion07, oglekler, SergeyBiryukov.
Fixes #57752.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-server.php

    r55822 r56096  
    22012201    }
    22022202
     2203    /**
     2204     * @ticket 57752
     2205     */
     2206    public function test_rest_exposed_cors_headers_filter_receives_request_object() {
     2207        $mock_hook = new MockAction();
     2208        add_filter( 'rest_exposed_cors_headers', array( $mock_hook, 'filter' ), 10, 2 );
     2209
     2210        rest_get_server()->serve_request( '/test-exposed-cors-headers' );
     2211
     2212        $this->assertCount( 1, $mock_hook->get_events() );
     2213        $this->assertCount( 2, $mock_hook->get_events()[0]['args'] );
     2214        $this->assertInstanceOf( 'WP_REST_Request', $mock_hook->get_events()[0]['args'][1] );
     2215        $this->assertSame( '/test-exposed-cors-headers', $mock_hook->get_events()[0]['args'][1]->get_route() );
     2216    }
     2217
     2218    /**
     2219     * @ticket 57752
     2220     */
     2221    public function test_rest_allowed_cors_headers_filter_receives_request_object() {
     2222        $mock_hook = new MockAction();
     2223        add_filter( 'rest_allowed_cors_headers', array( $mock_hook, 'filter' ), 10, 2 );
     2224
     2225        rest_get_server()->serve_request( '/test-allowed-cors-headers' );
     2226
     2227        $this->assertCount( 1, $mock_hook->get_events() );
     2228        $this->assertCount( 2, $mock_hook->get_events()[0]['args'] );
     2229        $this->assertInstanceOf( 'WP_REST_Request', $mock_hook->get_events()[0]['args'][1] );
     2230        $this->assertSame( '/test-allowed-cors-headers', $mock_hook->get_events()[0]['args'][1]->get_route() );
     2231    }
     2232
    22032233    public function _validate_as_integer_123( $value, $request, $key ) {
    22042234        if ( ! is_int( $value ) ) {
Note: See TracChangeset for help on using the changeset viewer.