У меня есть приложение Rails 3.2.21, которое требует, чтобы пользователь вошел в систему, чтобы выполнить несколько действий (например, подписаться на другого пользователя).
Проблема в том, что я переключил ТОЛЬКО страницы входа и регистрации на https ; остальная часть приложения по-прежнему http (с использованием rack-ssl -forcer gem для 301 перенаправления с http -> https только на эти две страницы, если это имеет значение). Когда открывается модал через Ajax, чтобы показать логин или регистрацию, это не работает. В журналах Rails написано:
WARNING: Can't verify CSRF token authenticity
А в Chrome консоль говорит:
Failed to load https://mydomain/signup: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mydomain' is therefore not allowed access.
Код выглядит следующим образом. При нажатии на ссылку, чтобы перейти к пользователю, запускается следующий код jQuery:
$.ajax({
type: "GET",
url: "/follow/" + $(this).data("follow-id")
})
FollowsController
имеет before_filter :login_required
, а метод login_required
в ApplicationController
выглядит следующим образом:
def login_required
redirect_to "/signup" and return
end
Если на странице входа и регистрации нет https, все работает как обычно. Когда я переключил их на https, эта проблема закралась.
EDIT:
Уже пробовал решение, выложенное здесь , безрезультатно.