0

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

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

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

有没有rest-client办法做到这一点?如果没有,我应该将它们存储在 *nix 和 windows 系统的文件系统中的什么位置?

谢谢

4

2 回答 2

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

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

于 2013-04-25T19:55:08.417 回答
0

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

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

于 2014-09-29T03:20:10.820 回答