У меня есть сайт WP с API, и я звоню на другой сайт. Я получаю эту ошибку
Доступ к XMLHttpRequest на www.wpsiteurl.com
от происхождения www.theothersiteurl.com был заблокирован CORS
политика: Ответ на предполётный запрос не проходит контроль доступа
проверка: заголовок «Access-Control-Allow-Origin» содержит несколько
значения «www.theothersiteurl.com, *», но допускается только одно.
Я нашел решения здесь и здесь , которые в основном вводят добавление этого в функцию регистра:
remove_filter( 'rest_pre_serve_request', 'rest_send_cors_headers' );
add_action( 'rest_pre_serve_request', function ($value) {
$origin = get_http_origin();
header( 'Access-Control-Allow-Headers: X-Requested-With' );
header( 'Access-Control-Allow-Methods: POST, GET' );
header( 'Access-Control-Allow-Origin: *');
header( 'Access-Control-Allow-Credentials: true');
return $value;
});
Для меня это не работает, так как он просто возвращает * или все, что добавлено в качестве источника и другого *. Изменение второго аргумента не помогает, похоже, что после добавления этого действия к источникам добавлен подстановочный знак.
Я отредактировал файл .htaccess, как советовали в ответах. Это работало в другой среде, где я тестировал решение. Однако на другом сервере этого не произошло - источник был добавлен в строку источников, как если бы он был добавлен с php.
Мне кажется, что есть что-то, что мешает полностью переопределить access-control-allow-origin и заставляет добавлять к нему.
Мои вопросы:
- Что может привести к тому, что сервер не разрешит установить один Access-Control-Allow-Origin?
- Как мне "переопределить" или очистить Access-Control-Allow-Origin?