Ruby on rails Rails4:如果类型是JSON,在请求/响应中设置cookie?

Ruby on rails Rails4:如果类型是JSON,在请求/响应中设置cookie?,ruby-on-rails,json,cookies,Ruby On Rails,Json,Cookies,在Rails中响应类型为application/json的请求时,如何设置cookie 控制器操作按预期工作,但没有设置cookie,响应中也没有设置cookie头。任何帮助都将不胜感激 控制器: class SessionsController < ApplicationController def create @user = User.find_by(email: params[:session][:email].downcase) if u

在Rails中响应类型为application/json的请求时,如何设置cookie

控制器操作按预期工作,但没有设置cookie,响应中也没有设置cookie头。任何帮助都将不胜感激

控制器:

class SessionsController < ApplicationController

    def create
        @user = User.find_by(email: params[:session][:email].downcase)
        if user && user.authenticate(params[:session][:password])
            log_in(user)
            .
            .
            cookies[:test] = 'Test cookie'

            render json: @user
            #render json: @user, set_cookie: 'test' #Also tried this
        else
            render text: 'Wrong username and/or password', status: 401
        end
    end

end

我遇到了同样的问题。 我是这样解决的:

response.set_cookie "name", "nic"
我还提出了问题的原因。正是伪造保护在响应生成之前使会话无效

要使用
cookies
方法,您需要跳过令牌的身份验证:

skip_before_action :verify_authenticity_token

您的代码在Rails 4.2.0中非常适合我,可能问题在于相关浏览器没有将cookie返回给您。为什么你认为Rails没有响应cookie?您是否尝试使用
curl
查看标题?请确保设置了
path=/
,如果我理解正确,那么这是一个非常糟糕的主意。这会使您的站点容易受到跨域攻击,而这些攻击不会被验证为来自您自己的某个登录用户。与其跳过验证,不如确保发送带有JSON请求的CSRF令牌。
skip_before_action :verify_authenticity_token