【发布时间】:2011-06-02 17:32:39
【问题描述】:
我想在我的网站上随时随地加载 cookie,因为当我的 RoR 应用程序接收并接受“外部”HTTP 请求(例如:REST API)时,不会加载 cookie(请参阅RFC2109)。所以它们的值是不可访问的。
只有在我的应用程序“内部”发出 HTTP 请求时,才能访问 Cookie。
【问题讨论】:
标签: http cookies request ruby-on-rails-3 set
我想在我的网站上随时随地加载 cookie,因为当我的 RoR 应用程序接收并接受“外部”HTTP 请求(例如:REST API)时,不会加载 cookie(请参阅RFC2109)。所以它们的值是不可访问的。
只有在我的应用程序“内部”发出 HTTP 请求时,才能访问 Cookie。
【问题讨论】:
标签: http cookies request ruby-on-rails-3 set
new_cookies = {"Cookie" => "mycookie=1234;myothercookie=4567"}
Net::HTTP.get( URI.parse( http: //app1.website.com/users ), new_cookies)
【讨论】:
所有浏览器都会自动发送您在域中设置的任何 cookie,您只需从任何控制器方法调用 request.cookies 即可检查它们。请求是否从您的应用程序内部发起(例如 302 重定向)都没有关系。
【讨论】:
我刚刚用 Firecookie 试过这个:
cookie 是由浏览器自动发送的,服务器永远不会请求向它发送 cookie。
【讨论】:
REST API 通常是无状态的,因此您应该避免使用服务器端会话或客户端 cookie。如果您想指示用户只获取属于他们的资源,请使用 Rails 嵌套资源方法,这会导致如下调用:
http://abc.com/user/user001/books
对于属于 user001 的所有书籍。
如果您希望实现安全性,首先您必须使用 HTTPS 而不是 HTTP。对于实际实现,您可以使用基本身份验证并在请求标头中设置用户名/密码,或者您可以使用 OAuth 之类的东西,它为他们在每个请求中传递的用户设置一个令牌。
【讨论】: