Ruby on rails Rails4:如果类型是JSON,在请求/响应中设置cookie?
在Rails中响应类型为application/json的请求时,如何设置cookie 控制器操作按预期工作,但没有设置cookie,响应中也没有设置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
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