繁体   English   中英

Sinatra无法识别会话的JavaScript

[英]Sinatra not recognising javascript for session

我正在尝试使用jQuery登录Sinatra应用程序,但是出于某种原因,Sinatra似乎根本无法识别它,这是我的代码,用于查看用户是否已登录:

Sinatra应用程序:

get '/logged_in' do
    if session[:logged_in] == true
         status 200
         "OK"
    else
        status 200
        "False"
    end
end

当我在浏览器中浏览到/logged_in时,我看到OK ,但是当我执行以下Javascript时,将False打印到控制台-对我来说似乎很奇怪。

var r = $.ajax({
  type: "GET",
  url: "http://xxx-xxx.com/logged_in"
});
r.success(function(msg) {
    console.log(msg);
});

任何见识将不胜感激!

如果您可以提供更多详细信息,那将是很好的。 (浏览器,按时间顺序排列的请求日志(包括HTTP状态代码),甚至是Wireshark的转储。)但是,这是我的猜测:

var r = $.ajax({
  cache: false,
  type: "GET",
  url: "/logged_in",
  success: function(msg) {
    console.log(msg);
  }
});

一些浏览器会主动缓存AJAX请求,尤其是GET请求。 因此,您可能要尝试使用cache: false 后来添加成功函数对我来说也很奇怪,我从未在任何代码中看到过。

编辑:服务器在同一域上回答AJAX请求吗? (该域必须与您的浏览器测试中的域相同。)通常不必在URL中指定域,因此我在此处的代码中将其删除。 所以,毕竟这可能是一个问题,由于同源策略

我认为这是jQuery问题,而不是Sinatra问题。 检查是否正在发送cookie以获取ajax请求。 无法发送Cookie的原因有很多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM