Ruby rest客户端持久cookie
我正在使用Ruby rest客户端持久cookie,ruby,http,session,cookies,rest-client,Ruby,Http,Session,Cookies,Rest Client,我正在使用rest-clientgem在CLI客户端和服务器之间进行通信。我正在使用cookies来持久化HTTP会话 @cookies = response.cookies ... RestClient.post( :cookies => @cookies) 正如您从代码片段中看到的,cookie在ruby进程中是持久的。我想让它们持久化更长时间(就像浏览器一样) 有没有本地的rest客户端方法可以做到这一点?如果没有,我应该将它们存储在*nix和windows系统的文件系统上的什么位
rest-client
gem在CLI客户端和服务器之间进行通信。我正在使用cookies来持久化HTTP会话
@cookies = response.cookies
...
RestClient.post( :cookies => @cookies)
正如您从代码片段中看到的,cookie在ruby进程中是持久的。我想让它们持久化更长时间(就像浏览器一样)
有没有本地的rest客户端
方法可以做到这一点?如果没有,我应该将它们存储在*nix和windows系统的文件系统上的什么位置
谢谢一个解决方案是使用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
要回答您关于将它们存储在何处的问题,这取决于您是否希望它们在会话之后继续存在。如果您只需要短期会话,内存是存储它们的理想场所。您可以使用一些外部存储方法,如或来实现您的目标,或者只需使用一堆文件来存储cookie(就像浏览器一样) 如果您使用redis或memcached,则可以使用域名作为密钥。 如果是文件,则只需使用域名作为文件名,并将cookie存储到这些文件中。 无论哪种方式,都应该将cookie哈希序列化为字符串(例如JSON)。您可以选择将cookie字符串转换为Base64以防止肩部黑客攻击,或者使用RSA对其进行加密以提高安全性并降低性能成本