Прежде всего, я хотел бы отметить, что ваши Get
запросы работают, потому что они принадлежат к категории, которая не запускает предполетный запрос. В то время как ваш запрос Post
, вероятно, использует какой-то заголовок, который удаляет его из категории, что требует прохождения предварительной проверки. Если вам интересно узнать больше, вот ссылка на документацию.
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Simple_requests
Теперь, согласно вашему комментарию, вы получаете ошибку
Ответ на предполетный запрос не проходит проверку контроля доступа: на запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'.
Метод, которым вы пользуетесь использование для установки заголовков, как вы упомянули в комментарии, не работает с запросами на отдых. Вы можете использовать приведенную ниже функцию в своем functions.php
или файле плагина, чтобы установить источник *
.
function sr_rest_send_cors_headers( $value )
{
header( 'Access-Control-Allow-Origin: *' );
header( 'Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, PATCH, DELETE' );
header( 'Access-Control-Allow-Credentials: true' );
header( 'Vary: Origin', false );
return $value;
}
add_filter( 'rest_pre_serve_request', 'sr_rest_send_cors_headers', 11 );
Хотя я рекомендую то, что WordPress делает по умолчанию. Если вы отметите wp-includes/rest-api.php
, вы найдете исходную функцию, которую я изменил для ваших целей. Если вам интересно взглянуть, вот ссылка tra c.
https://core.trac.wordpress.org/browser/tags/5.4/src/wp-includes/rest-api.php#L574