WordPress.org

Make WordPress Core

Ticket #20507: 20507.5.diff

File 20507.5.diff, 2.0 KB (added by ryan, 2 years ago)

Origin functions

  • wp-includes/class-wp-customize.php

     
    7171                if ( ! isset( $_REQUEST['customize'] ) || 'on' != $_REQUEST['customize'] ) 
    7272                        return; 
    7373 
    74                 $url = parse_url( admin_url() ); 
    75                 $allowed_origins = array( 'http://' . $url[ 'host' ],  'https://' . $url[ 'host' ] ); 
    76                 // @todo preserve port? 
    77                 if ( isset( $_SERVER[ 'HTTP_ORIGIN' ] ) && in_array( $_SERVER[ 'HTTP_ORIGIN' ], $allowed_origins ) ) { 
    78                         $origin = $_SERVER[ 'HTTP_ORIGIN' ]; 
    79                 } else { 
     74                if ( ! $origin = get_allowed_http_origin() ) { 
     75                        // @todo Maybe kill this fallback since fallbacks aren't to spec. 
     76                        $url = parse_url( admin_url() ); 
    8077                        $origin = $url[ 'scheme' ] . '://' . $url[ 'host' ]; 
    8178                } 
    8279 
  • wp-includes/http.php

     
    222222 
    223223        return (bool) $objFetchSite->_get_first_available_transport( $capabilities ); 
    224224} 
     225 
     226function get_http_origin() { 
     227        $origin = ''; 
     228        if ( ! empty ( $_SERVER[ 'HTTP_ORIGIN' ] ) ) 
     229                $origin = $_SERVER[ 'HTTP_ORIGIN' ]; 
     230 
     231        return apply_filters( 'http_origin', $origin ); 
     232} 
     233 
     234function get_allowed_http_origins() { 
     235        $admin_origin = parse_url( admin_url() ); 
     236        $home_origin = parse_url( home_url() ); 
     237 
     238        // @todo preserve port? 
     239        $allowed_origins = array( 
     240                                                'http://' . $admin_origin[ 'host' ], 
     241                                                'https://' . $admin_origin[ 'host' ], 
     242                                                'http://' . $home_origin[ 'host' ], 
     243                                                'https://' . $home_origin[ 'host' ], 
     244                                                ); 
     245 
     246        return apply_filters( 'allowed_http_origins' , $allowed_origins ); 
     247} 
     248 
     249function get_allowed_http_origin() { 
     250        $origin = get_http_origin(); 
     251 
     252        if ( $origin && ! in_array( $origin, get_allowed_http_origins() ) ) 
     253                $origin = ''; 
     254 
     255        return apply_filters( 'allowed_http_origin', $origin ); 
     256} 
     257 No newline at end of file