CORS проблемы с адресом домена, но работает нормально с прямым IP-адресом и localhost - PullRequest
0 голосов
/ 29 октября 2019

У меня есть служба django, размещенная на сервере, на котором есть apis с конечной точкой http://something.com/api_link

У меня есть веб-приложение в реакции, которое пытается запустить API http://something.com/api_link. Веб-приложение реакции размещенос доменом http://somethingother.com и я включил CORS на уровне django, чтобы разрешить всем источникам доступ к API.

Но я вижу странное поведение: -

Поведение1

всякий раз, когда я пытаюсь подключиться к API с локального или прямого IP-адреса (с которым связан домен http://somethingother.com), проблема не возникает, и API успешно завершается.

Поведение 2

Но всякий раз, когда я пытаюсь поразить API из доменного имени http://somethingother.com, я получаю эту проблему в вызове OPTIONS браузера.

Доступ к выборке в 'http://something.com/api_link' из источника' http://somethingother.com' был заблокирован политикой CORS: Поле заголовка запроса access-control-allow-origin не разрешено Access-Control-AllowЗаголовки в предполетном ответе.

И разницу, которую я заметил в обоих случаях. Где в заголовке запроса поведения 1 Access-Control-Request-Headers: content-type

и

в поведении 2 заголовка запроса доступа -Control-Request-Headers: access-control-allow-origin, тип контента

И в заголовках ответа обоих типов поведения я получаю

Access-Control-Разрешить заголовки: принять, принять кодировку, авторизацию, тип контента, dnt, источник, пользовательский агент, x-csrftoken, x-запрашиваемый-с

Я понимаю, что в заголовке ответа Access-Control-Allow-Headers не содержит access-control-allow-origin , но я не могу понять, почему локальный хост и даже прямой IP-адрес не работают впроблема, с которой сталкивается запрос домена.

Почему добавляется access-control-allow-origin, когда запрос поступает из домена, а не когда запрос поступает с IP-адреса или локального хоста.

Вот как я звоню API от клиента

fetch(" http://something.com/api_link", {
  method: "POST",
  headers: {
    Accept: "application/json",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    mobile: number
  })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...