Привет, я реализую оформление заказа в своем приложении Rails 5 с помощью Stripe. Процесс оформления заказа позволит пользователю оформить заказ с помощью Apple Pay или Google Pay. Я использовал пример кода JS из документации Stripe для реализации запроса на оплату. Я также добавляю X-CSRF-Token в заголовки в почтовом запросе xhr на сервер:
...
fetch('/checkout', {
method: 'POST',
body: JSON.stringify({token: ev.token.id}),
headers: {
'content-type': 'application/json',
'X-CSRF-Token': $('meta[name = "csrf-token"]').attr('content')
}
})
...
В ответ от сервера я получаю:
ActionController::InvalidAuthenticityToken in CheckoutController#create
Я использую Devise для защиты проверки, и я прочитал, что вы можете отключить проверки подлинности, добавив это в контроллер:
protect_from_forgery prepend: true
Однако это приводит к перенаправлению 302 на / users / sign_in





Проблема в том, что ваш запрос не аутентифицирован, потому что он отправляется без файлов cookie, поскольку Fetch APIfetch по умолчанию не включает файлы cookie.
Установите опцию credentials для включения файлов cookie в запрос.
fetch('/checkout', {
// ...
credentials: 'same-origin' // or 'include' (see the link below)
})