В серверной части Rails API отсутствует заголовок "Access-Control-Allow-Origin"
У меня есть jsonapi-resources
бэкэнд API в Rails. Я могу запросить данные, используя curl
как и в Python.
Когда я пытаюсь использовать jQuery
по запросу я получаю в браузере следующую ошибку:
XMLHttpRequest не может загрузить https://shop-api-3.herokuapp.com/customers?filter%5Bshop_token%5D=9e3c9769b752436ddbd27597cf946a36. Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок "Access-Control-Allow-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 = ABC123"
Использование Rails 4
1 ответ
У меня была такая же проблема месяц назад, и после прочтения множества постов в блоге, я решил ее с помощью...
Таким образом, похоже, что вы запрашиваете API-токен на другом сервере, используя jquery(из браузера) вместо того, чтобы делать это, запросите его с вашего сервера и получите его, передав его клиенту, и затем вы сможете делать все, что захотите, это должно сработать.
Насколько я понимаю, это CORS: вы не можете делать браузер на сервере, вы должны делать это с сервера (вашего домена) на сервер (API, к которому вы обращаетесь).
Надеюсь это поможет!