Я разрабатываю веб-инструмент (одностраничное приложение, созданное только с использованием HTML, CSS и JS) для управления публикациями на нескольких клиентских сайтах WordPress. Я использую встроенную функцию WordPress Пароли приложений для аутентификации, отправляя заголовок Authorization: Basic ....
Проблема: На некоторых сайтах соединение работает идеально. Однако на других сайтах я получаю ошибки CORS (совместное использование ресурсов между источниками), блокирующие запрос в начале.
При проверке вкладки Сеть в браузере я вижу, что запрос «Предварительная проверка» (
Код: Выделить всё
OPTIONSСценарий:
- Внешний интерфейс: JavaScript (API), работающий в браузере (на стороне клиента).
Код: Выделить всё
fetch - Бэкенд: Различные установки WordPress (разные хостинги).
- Аутентификация: Авторизация по заголовку с помощью base64 (Пользователь + пароль приложения).
JavaScript
Код: Выделить всё
async function loadWpCategories() {
const baseUrl = "https://site-exemplo.com";
const endpoint = "/wp-json/wp/v2/categories?per_page=100";
// Credenciais geradas no WP (Application Passwords)
const user = "admin";
const appPassword = "xxxx xxxx xxxx xxxx";
// Header Basic Auth
const authHeader = "Basic " + btoa(user + ":" + appPassword);
try {
// O erro dispara aqui
let resp = await fetch(baseUrl + endpoint, {
method: 'GET',
headers: {
'Authorization': authHeader,
'Content-Type': 'application/json'
}
});
if (!resp.ok) throw new Error("Status " + resp.status);
const data = await resp.json();
console.log(data);
} catch (err) {
console.error("Erro ao carregar categorias:", err);
}
}
Доступ к выборке «...» из источника «...» заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Попытки:
- Я заметил, что ошибка возникает именно тогда, когда я добавляю заголовок авторизации. Без него (для общедоступных маршрутов) CORS часто не блокируется, но он мне нужен для аутентификации.
- Я попробовал добавить режим: 'cors' при выборке, но ошибка не устранена.
Подробнее здесь: https://stackoverflow.com/questions/798 ... and-applic
Мобильная версия