Ошибка CORS и Preflight (403) в WordPress REST API с использованием ванильного JS и паролей приложений [закрыто]Html

Программисты Html
Ответить
Anonymous
 Ошибка CORS и Preflight (403) в WordPress REST API с использованием ванильного JS и паролей приложений [закрыто]

Сообщение Anonymous »

Тело вопроса
Я разрабатываю веб-инструмент (одностраничное приложение, созданное только с использованием HTML, CSS и JS) для управления публикациями на нескольких клиентских сайтах WordPress. Я использую встроенную функцию WordPress Пароли приложений для аутентификации, отправляя заголовок Authorization: Basic ....
Проблема: На некоторых сайтах соединение работает идеально. Однако на других сайтах я получаю ошибки CORS (совместное использование ресурсов между источниками), блокирующие запрос в начале.
При проверке вкладки Сеть в браузере я вижу, что запрос «Предварительная проверка» () возвращает статус 403 Запрещено или 404, и браузер блокирует последующий запрос GET или POST.
Сценарий:
  • Внешний интерфейс: JavaScript ( API), работающий в браузере (на стороне клиента).
  • Бэкенд: Различные установки 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' при выборке, но ошибка не устранена.
Вопрос: Есть ли способ решить эту проблему с помощью кода в моем интерфейсе (JavaScript)? Или такое поведение подтверждает, что серверы WordPress этих клиентов блокируют запросы OPTIONS или заголовки внешней авторизации, и единственным решением является установка плагина CORS на целевой WordPress?


Подробнее здесь: https://stackoverflow.com/questions/798 ... and-applic
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»