GC_Http::block_request()
最后更新于:2021-12-01 11:14:21
GC_( string$uri)Determines whether an HTTP API request to the given URL should be blocked.
参数
- $uri
-
(string) (Required) URI of url.
响应
(bool) True to block, false to allow.
源文件
文件: gc-includes/class-http.php
public function block_request( $uri ) {
// We don't need to block requests, because nothing is blocked.
if ( ! defined( 'GC_HTTP_BLOCK_EXTERNAL' ) || ! GC_HTTP_BLOCK_EXTERNAL ) {
return false;
}
$check = parse_url( $uri );
if ( ! $check ) {
return true;
}
$home = parse_url( get_option( 'siteurl' ) );
// Don't block requests back to ourselves by default.
if ( 'localhost' === $check['host'] || ( isset( $home['host'] ) && $home['host'] == $check['host'] ) ) {
/**
* Filters whether to block local HTTP API requests.
*
* A local request is one to `localhost` or to the same host as the site itself.
*
* @since 2.8.0
*
* @param bool $block Whether to block local requests. Default false.
*/
return apply_filters( 'block_local_requests', false );
}
if ( ! defined( 'GC_ACCESSIBLE_HOSTS' ) ) {
return true;
}
static $accessible_hosts = null;
static $wildcard_regex = array();
if ( null === $accessible_hosts ) {
$accessible_hosts = preg_split( '|,s*|', GC_ACCESSIBLE_HOSTS );
if ( false !== strpos( GC_ACCESSIBLE_HOSTS, '*' ) ) {
$wildcard_regex = array();
foreach ( $accessible_hosts as $host ) {
$wildcard_regex[] = str_replace( '*', '.+', preg_quote( $host, '/' ) );
}
$wildcard_regex = '/^(' . implode( '|', $wildcard_regex ) . ')$/i';
}
}
if ( ! empty( $wildcard_regex ) ) {
return ! preg_match( $wildcard_regex, $check['host'] );
} else {
return ! in_array( $check['host'], $accessible_hosts, true ); // Inverse logic, if it's in the array, then don't block it.
}
}