在Ruby on Rails 3中收到的每个请求都可以'设置Cookie'吗?

时间:2011-01-03 07:11:08

标签: http cookies request ruby-on-rails-3 set

我想在我的网站中随时随地加载Cookie,因为当我的RoR应用程序收到并接受“外部”HTTP请求(例如:REST API)时,不会加载Cookie(请参阅RFC2109)。所以他们的价值观无法实现。

只有在我的应用程序中“内部”发出HTTP请求时才能访问Cookie。

4 个答案:

答案 0 :(得分:2)

new_cookies = {"Cookie" => "mycookie=1234;myothercookie=4567"}
Net::HTTP.get( URI.parse( http: //app1.website.com/users ),  new_cookies)

答案 1 :(得分:1)

所有浏览器都会自动发送您从域中设置的任何Cookie,只需从任何控制器方法调用request.cookies即可查看。请求是否是从您的应用程序中启动(例如302重定向)并不重要。

答案 2 :(得分:1)

我刚用Firecookie尝试过这个:

  1. 为域名“.stackoverflow.com”创建了一个Cookie“mycoolcookie”
  2. 去了stackoverflow.com,firebug显示cookie已在请求标题中发送。
  3. 去了meta.stackoverflow.com,firebug显示cookie已在请求标题中发送。
  4. 去聊天.stackoverflow.com,firebug显示cookie已在请求标题中发送。
  5. 浏览器会自动发送cookie,服务器永远不会要求将cookie发送给它。

答案 3 :(得分:0)

REST API通常是无状态的,因此您应该避免使用服务器端会话或客户端Cookie。如果要表明用户只抓取属于它们的资源,请使用Rails嵌套资源方法,这会产生如下调用:

http://abc.com/user/user001/books

适用于属于user001的所有图书。

如果您希望实现安全性,首先必须使用HTTPS而不是HTTP。对于实际实现,您可以使用基本身份验证并在请求标头中设置用户名/密码,或者您可以使用类似OAuth的内容,为每个请求传入的用户设置令牌。