Javascript 如何从JQuery设置Sinatra会话?

Javascript 如何从JQuery设置Sinatra会话?,javascript,jquery,ruby,session,sinatra,Javascript,Jquery,Ruby,Session,Sinatra,我正在尝试创建一个从JQuery到我的Sinatra后端的会话。当我在Ajax之外发送POST请求时,使用类似POSTman的东西,我可以设置会话,但是当我通过JQuery发送时,我只会得到NULL作为回报。如何使用AJAX创建会话?我应该通过AJAX还是JU有一个登录屏幕 这是我的会话(以及其他相关)设置代码: set :protection, :except => [:http_origin, :remote_token] //I put this because Sinatra wa

我正在尝试创建一个从JQuery到我的Sinatra后端的会话。当我在Ajax之外发送POST请求时,使用类似POSTman的东西,我可以设置会话,但是当我通过JQuery发送时,我只会得到NULL作为回报。如何使用AJAX创建会话?我应该通过AJAX还是JU有一个登录屏幕

这是我的会话(以及其他相关)设置代码:

set :protection, :except => [:http_origin, :remote_token] //I put this because Sinatra was denying the request before
set :session_secret, "My session secret"

post '/session' do
    session[:user_id] ||= 'hihiiddasdah'
    session[:user_id].to_json
end

delete '/session' do
    session.clear
    session[:user_id].to_json

end

get '/session' do
    session[:user_id].to_json
end
这是我获取会话的JQuery代码:

$.post(URL + 'session', {function(data) {console.log(data);});

ajax请求是从与服务器URL相同的域发出的吗?它们都在本地主机中,但不在相同的文件夹中。我将响应['Access-Control-Allow-Origin']='*'放在Sinatra中。(我计划先让它工作,然后慢慢地增加安全性。)你能打开chrome控制台F12,然后看看你在OutputKay中看到了什么错误(如果有的话)。下面是发生的情况,我可以在“设置”会话后记录“hihiiddasdah”。但是对
GET'/session'
的后续请求会导致
NULL
。当我在chrome的“资源”选项卡中检查会话存储和Cookie存储时,没有设置任何会话和Cookie。并且您正在从与最初发布相同的url运行get请求,对吗?另外,为了排除显而易见的问题:您正在使用基于cookie的会话?编辑:在返回json时,还应该设置
content\u type:json
。我不认为这会导致这个问题,但你无论如何都应该这样做