Javascript ActionController::InvalidAuthenticationToken at/users/sign_in
我正在尝试通过两个不同的应用程序进行ajax调用通信 我正在使用localhost托管这些应用程序,Javascript ActionController::InvalidAuthenticationToken at/users/sign_in,javascript,ruby-on-rails,ajax,devise,Javascript,Ruby On Rails,Ajax,Devise,我正在尝试通过两个不同的应用程序进行ajax调用通信 我正在使用localhost托管这些应用程序,http://localhost:3000和http://localhost:3001 在端口3000中,我设计了基本设置 以下是路线: devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" } 我试图用端口3001中的第二个应用程序做的是制作一个aja
http://localhost:3000
和http://localhost:3001
在端口3000中,我设计了基本设置
以下是路线:
devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
我试图用端口3001中的第二个应用程序做的是制作一个ajax帖子来登录
下面是javascript:
$(function(){
$('#sign_in_user').on('click', function(){
var user = {
user: {
email: $('#sign_in_email').val(),
password: $('#sign_in_password').val()
}
};
$.ajax({
type: 'POST',
url: 'http://localhost:3000/users/sign_in',
dataType: 'json',
data: user,
success: function(newSignin){
console.log(newSignin);
},
error: function(){
alert('error');
}
});
});
});
但当它被执行时,我得到:
ActionController::InvalidAuthenticityToken at /users/sign_in
我已经读了一些关于csrf meta标记的内容,以及ajax调用中的beforeSend
,但是没有解决这个问题
我做错了什么
另外,我正在使用
gem'rack cors'
来接受来自其他域/应用程序的呼叫。您是否在ApplicationController中添加了这一行protect\u from\u forgery with::exception
。?它用于CSRF保护。在rails 4中,当您创建控制器时,默认情况下会添加控制器。有关详细信息,请参阅此链接。如果错误仍然存在,您可能也需要更改为此设置。protect\u from\u forgery with::null\u session
查看此链接好的,将其更改为此protect\u from\u forgery with::null\u session
@Athar,我尝试将其更改为:null\u session
,现在我就可以发布了,但我猜这不是正确的方法吗?不,这是正确的方法。。请看这是来自ActionController的,空会话是有效选项。看最后一个。在最新的rails中。当您创建项目时。在应用程序控制器中。它用这样的话告诉你自己:“#通过引发异常来防止CSRF攻击。#对于API,你可能想改为使用:null_session.protect_from_forgery with::exception”你是否在ApplicationController中添加了这一行protect_from_forgery with::exception
。它是用于CSRF保护的。在rails 4中,当您创建控制器时,默认情况下会添加控制器。有关详细信息,请参阅此链接。如果错误仍然存在,您可能也需要更改为此设置。protect\u from\u forgery with::null\u session
查看此链接好的,将其更改为此protect\u from\u forgery with::null\u session
@Athar,我尝试将其更改为:null\u session
,现在我就可以发布了,但我猜这不是正确的方法吗?不,这是正确的方法。。请看这是来自ActionController的,空会话是有效选项。看最后一个。在最新的rails中。当您创建项目时。在应用程序控制器中。它用这样的话告诉您自己:“#通过引发异常来防止CSRF攻击。#对于API,您可能希望改用:null#session。使用::exception防止#u伪造”