Почему перенаправленный URL с тем же доменом столкнулся с проблемой CORS? - PullRequest
1 голос
/ 26 марта 2019

Ситуация немного сложная.Я использовал http-сервер для размещения своего локального кода на localhost: 8080.Затем я использовал Чарльза для сопоставления онлайнового URL (example.online.com/index.html) с моим локальным URL-адресом (localhost: 8080 / index.html), чтобы делиться файлами cookie.Затем я запустил сервер локального узла как фиктивный сервер на localhost: 9963. На фиктивном сервере реализованы настройки CORS.Я сделал запрос к localhost: 9963 / api / list использует Fetch Api в моем локальном коде, поэтому на запрос были даны ложные данные cors.Иногда я не хотел, чтобы фиктивный сервер отвечал на фиктивные данные.Вместо этого фиктивный сервер перенаправил запрос (localhost: 9963 / api / list) на онлайн-API (example.online.com/api/list) с 307. Проблема в том, что, когда браузер следовал за перенаправлением, проблема CORSпроизошло.Я путаюсь с тем, почему CORS произошел, когда перенаправленный URL http://example.online.com/api/list находится в том же домене, что и http://example.online.com/index.html.

, ошибка: URL-адрес источника заменен URL-адресом примера):

Доступ к выборке в 'http://example.online.com/api/list' (перенаправлен из' http://localhost:9963/api/list') из источника 'null' был заблокирован политикой CORS: Ответ на запрос предпечатной проверки не проходит проверку контроля доступа:В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

код выборки:

  const url = `http://localhost:9963/api/list`;
  const method = 'POST';
  const headers = {
    "Content-Type": `application/json`,
    "Accept": `application/json`
  };
  const body = JSON.stringify(req);
  const credentials = 'include';
  const mode = 'cors';
  return fetch(url, {
    method,
    headers,
    body,
    credentials,
    mode
  })

код перенаправления (с использованием koa2):

  const r_url = 'http://example.online.com/api/list';
  ctx.status = 307;
  ctx.redirect(r_url);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...