| | 225 | |
| | 226 | function 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 | |
| | 234 | function 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 | |
| | 249 | function 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 | |
| | 258 | function send_origin_headers() { |
| | 259 | if ( ! $origin = get_allowed_http_origin() ) |
| | 260 | return; |
| | 261 | |
| | 262 | @header( 'Access-Control-Allow-Origin: ' . $origin ); |
| | 263 | @header( 'Access-Control-Allow-Credentials: true' ); |
| | 264 | } |
| | 265 | No newline at end of file |