Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ActionController::InvalidAuthenticationToken at/users/sign_in_Javascript_Ruby On Rails_Ajax_Devise - Fatal编程技术网

Javascript ActionController::InvalidAuthenticationToken at/users/sign_in

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

我正在尝试通过两个不同的应用程序进行ajax调用通信

我正在使用localhost托管这些应用程序,
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伪造”