【问题标题】:Ruby rest-client persisting cookiesRuby rest-client 持久化 cookie
【发布时间】:2014-09-29 11:33:48
【问题描述】:

我正在使用rest-client gem 在我的 CLI 客户端和服务器之间进行通信。我正在使用 cookie 来保持 HTTP 会话。

@cookies = response.cookies
...
RestClient.post( :cookies => @cookies)

从 sn-p cookie 可以看出,cookie 在 ruby​​ 进程中是持久的。我想将它们持久化更长的时间(就像浏览器一样)。

有没有原生的rest-client 方法可以做到这一点?如果没有,我应该将它们存储在 *nix 和 windows 系统的文件系统的哪里?

谢谢

【问题讨论】:

    标签: ruby http session cookies rest-client


    【解决方案1】:

    一种解决方案是使用 RestClient::Resource

    然后你可以调用它,cookies就会被持久化。

    def client(url)
        headers = {
            :accept => :json,
            :content_type => :json,
        }
    
        cookies = {}
        cookies[SESSION_COOKIE] = @sessionID if @sessionID
        RestClient::Resource.new(url, :headers => headers, :cookies => cookies)
    end
    

    要回答有关将它们存储在何处的问题,这取决于您是否希望它们在会话之后持续存在。如果您只需要短期会话,内存中是存储它们的理想场所。

    【讨论】:

      【解决方案2】:

      您可以使用RedisMemcached 等外部存储方法来实现您的目标,或者只是使用一堆文件来存储您的cookie(就像浏览器一样)。

      如果你使用redis或者memcached,可以使用域名作为key。 如果是文件,则只需使用域名作为文件名,并将 cookie 存储到这些文件中。 无论哪种方式,您都应该将 cookie 哈希序列化为字符串(例如 JSON)。您可以选择将 cookie 字符串转换为 Base64 以防止黑客攻击,或使用 RSA 对其进行加密以提高性能成本的安全性。

      【讨论】:

        猜你喜欢
        • 2016-06-24
        • 2012-08-09
        • 2011-02-20
        • 1970-01-01
        • 2013-05-14
        • 2017-04-29
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多