Это кажется более очевидным. Я использую WordPress для управления контентом внешнего сайта. Содержимое WordPress отображается через WP REST API, и я отображаю содержимое с помощью ajax и JS на этом удаленном сайте. (например, https://example.com//wp-json/wp/v2/pages/23). Все на SSL и все отлично работает. Как я могу просто сделать так, чтобы этот запрос ajax GET разрешался только с определенного домена - удаленного сайта? API WP используется только для отображения данных.
WordPress WP REST API ограничивает запросы по домену
Ответы (1)
Я только что посмотрел на переменные сервера php и понял это. $_SERVER['HTTP_ORIGIN']; был тот, который я хватаю. Работает как шарм!
add_filter( 'rest_authentication_errors', 'gc_filter_incoming_connections' );
function gc_filter_incoming_connections( $errors ){
$allowed_origins = array('https://www.example.com'); // url that you want to access your WP REST API
$request_origin = $_SERVER['HTTP_ORIGIN'];
if( ! in_array( $request_origin, $allowed_origins ) )
return new WP_Error( 'forbidden_access', 'Access denied', array( 'status' => 403 ) );
return $errors;
}
person
pelicanpaul
schedule
11.05.2017
HTTP_ORIGIN
не является безопасным и не отправляется каждым браузером. Я рекомендую против его использования.
- person Ahmad Awais; 03.08.2018