【问题标题】:Creating a session without using cookie不使用 cookie 创建会话
【发布时间】:2014-08-27 15:52:33
【问题描述】:

我想创建类似于 faebook 的“喜欢”的应用程序。在 Facebook 中,一旦您登录 Facebook,所有带有“喜欢”插件的网站都可以访问该 Facebook 登录并获取必要的数据(例如,您是否喜欢或您的朋友/人有多少喜欢该页面或其他)。但是,为了维护会话,facebook 使用 cookie 将会话存储在浏览器上。 如果您关闭/删除 cookie,它将不起作用。

是否有任何技术或方法可以在服务器上维护会话或不依赖于 cookie?

谢谢。

【问题讨论】:

    标签: javascript ruby-on-rails session jakarta-ee cookies


    【解决方案1】:

    我认为您是指第三方网站上的 Facebook“点赞”按钮?

    这将直接调用 Facebook 服务,使用它们的 API,并在 iframe 中加载 FB 接口的“实例”。

    --

    CORS

    您主要关注的是如何管理服务的CORS 元素

    CORS(跨源资源共享) 允许外部服务器通过 Ajax 访问您服务器上的资源。这可能是该过程中最重要的元素,因为它允许 FB / Twitter 之类的公司为其按钮加载数字“一般”数据。

    这部分是您实现功能的地方,也是他推荐*时原始答案所指的内容

    Rails gem called RACK-CORS 处理 Rails / Rack 应用程序的 CORS 策略:

      #config/application.rb
      use Rack::Cors do
        allow do
          origins '*'
          resource '/buttons/*', :headers => :any, :methods => :get
        end
      end
    

    当您使用下面的 JS 时,您基本上可以向domain.com/buttons/:button_id 发送 Ajax 请求以获取数据的 pingback(点赞数等)

    --

    JS

    按钮本身将使用 JS 填充,并且可能会调用 JSON 或纯 HTTP 来获取所需的通用数据

    它将从 Facebook 服务中检索“喜欢”的数量。这将使用 JS 完成,并且需要如上所述的 CORS 设置,因为它将使用 XHR 来检索所需的数据。

    这就是为什么您至少需要一个页面 ID,有时还需要某种更深入的身份验证(应用 ID、小部件 ID、oAuth)才能在您的网站上获取这些小部件之一。原因是为了让按钮检索所需的数据,服务器需要知道数据的用途

    你可以这样做:

    #javascript xhr
    (function($){
       //call Ajax to get numeric data for button
    });
    

    --

    身份验证

    如果你想知道用户是否“喜欢”了一个页面,你最好同时使用 FB 和 Twitter 的方法(我认为)并使用 iframe 来加载按钮

    这听起来可能有点老套,但事实是,托管在 FB 服务上的 iframe 将使您能够在服务本身上验证会话,从而提供知道按钮是否具有是否被“激活”。

    要直接回答您的问题,该按钮不会保持会话;它将在按钮的调用方式范围内(它在服务器上吗?)

    【讨论】:

    • 感谢您的快速回复...我明白了您所说的。但我主要关心的不是维护或访问不依赖 cookie 的用户会话(facebook 和 google 也这样做)。如果您禁用浏览器 cookie,它们甚至都不允许您登录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多