В серверной части API Rails отсутствует заголовок «Access-Control-Allow-Origin».

У меня есть API-интерфейс jsonapi-resources в Rails. Я могу запрашивать данные, используя curl, а также в Python.

Когда я пытаюсь использовать jQuery для запроса, я получаю следующую ошибку в браузере:

XMLHttpRequest не может загрузить https://shop-api-3.herokuapp.com/customers?filter%5Bshop_token%5D=9e3c9769b752436ddbd27597cf946a36. Ответ на предварительный запрос не проходит проверку управления доступом: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, Origin 'null' не имеет доступа. В ответе был код состояния HTTP 404.

Поэтому я добавил это к config/environments/production.rb:

  config.action_dispatch.default_headers = {
      'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept, Authorization',
      'Access-Control-Allow-Origin' => '*',
      'Access-Control-Request-Method' => '*',
      'X-Frame-Options' => 'ALLOWALL'
    }

Тем не менее, я все еще получаю ту же ошибку. Что мне не хватает?

FWIW, это моя команда curl:

curl -i -H "Accept: application/vnd.api+json" "https://app.herokuapp.com/retentions?filter%5Bshop_token%

5D=АВС123"

Использование рельсов 4


person Adam12344    schedule 29.10.2016    source источник


Ответы (1)


У меня была такая же проблема месяц назад, и, прочитав много сообщений в блогах, я решил ее...

Таким образом, похоже, что вы запрашиваете токен API на другом сервере, используя jquery (из браузера), вместо того, чтобы делать это, запросите его с вашего сервера, и вы получите его, передайте его клиенту, а затем вы можете делать все, что хотите, это должно помочь.

Насколько я понимаю этот CORS, вы не можете использовать браузер на сервере, вы должны делать это с сервера (вашего домена) на сервер (API, к которому вы обращаетесь).

Надеюсь это поможет!

person Yandri    schedule 29.10.2016