Все запросы заблокированы политикой CORS по разработке - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть Rails API со стороны клиента React.У меня все давно было в настройке приложения, и сегодня, когда я работал над ним, я внезапно начал получать сообщение об ошибке:

Access to XMLHttpRequest at 'http://localhost:3000/api/v1/user/authed'
from origin 'http://localhost:8000' has been blocked by CORS policy: 
The value of the 'Access-Control-Allow-Origin' header in the response 
must not be the wildcard '*' when the request's credentials mode is 
'include'. The credentials mode of requests initiated by the 
XMLHttpRequest is controlled by the withCredentials attribute.

Теперь ни один из запросов в моем приложении не работает вообще.

Запрос действительно проходит от приложения React к Rails API, и Rails API также отвечает правильно (я вижу это в терминале), но на самом деле ничего не происходит на стороне клиента, потому что я предполагаю, что он заблокированпо причине CORS.

Что я могу сделать, чтобы это исправить?Может ли быть так, что какой-то пакет каким-то образом обновлен в моей системе и отличается от проекта, поэтому теперь он ломается?

URL-адрес для запроса:

const ENDPOINT = '/api/v1',
      PORT = 3000,
      URL = window.location.protocol + '//' + window.location.hostname + ':' + PORT + ENDPOINT;

Запрос

$.ajax({
  url: URL + '/' + resource,
  type: verb,
  data: params,
  xhrFields: { withCredentials: true }
})
  .done(callback)
  .fail(errcallback);

Функции запроса имеют формат:

static get(resource, params, callback, errcallback) {
  API.send('GET', resource, params, callback, errcallback);
}

1 Ответ

0 голосов
/ 11 декабря 2018

Если вашему API не требуются учетные данные, вы должны удалить withCredentials: true.

Подробнее о withCredentials:

Свойство XMLHttpRequest.withCredentials является логическим значением, которое указывает, является лиили нет, межсайтовые запросы Access-Control должны быть сделаны с использованием учетных данных, таких как куки, заголовки авторизации или клиентские сертификаты TLS.Настройка withCredentials не влияет на запросы одного сайта.

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

...