Http 可以';设置Cookie';在RubyonRails3中收到的每个请求都是什么?

Http 可以';设置Cookie';在RubyonRails3中收到的每个请求都是什么?,http,cookies,request,ruby-on-rails-3,set,Http,Cookies,Request,Ruby On Rails 3,Set,我想在我的网站上的任何时候和任何地方加载cookie,因为当我的RoR应用程序接收并接受“外部”HTTP请求(例如:REST API)时,cookie不会加载(请参阅)。因此,它们的值无法访问 只有在我的应用程序中“内部”发出HTTP请求时,才能访问Cookie。所有浏览器将自动发送您从域中设置的任何Cookie,您只需从任何控制器方法调用request.Cookies即可检查它们。请求是否从应用程序内部启动(例如302重定向)并不重要。所有浏览器都会自动发送您从域中设置的任何cookie,您只

我想在我的网站上的任何时候和任何地方加载cookie,因为当我的RoR应用程序接收并接受“外部”HTTP请求(例如:REST API)时,cookie不会加载(请参阅)。因此,它们的值无法访问


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

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

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

我只是用Firecookie尝试了以下方法:

  • 为域“.stackoverflow.com”创建了一个cookie“mycolcookie”
  • 转到stackoverflow.com,firebug显示cookie是在请求头中发送的
  • 转到meta.stackoverflow.com,firebug显示cookie是在请求头中发送的
  • 转到chat.stackoverflow.com,firebug显示cookie是在请求头中发送的

  • 浏览器会自动发送cookie,服务器永远无法请求向其发送cookie。

    我刚刚用Firecookie尝试了以下方法:

    new_cookies = {"Cookie" => "mycookie=1234;myothercookie=4567"}
    Net::HTTP.get( URI.parse( http: //app1.website.com/users ),  new_cookies)
    
  • 为域“.stackoverflow.com”创建了一个cookie“mycolcookie”
  • 转到stackoverflow.com,firebug显示cookie是在请求头中发送的
  • 转到meta.stackoverflow.com,firebug显示cookie是在请求头中发送的
  • 转到chat.stackoverflow.com,firebug显示cookie是在请求头中发送的

  • cookie由浏览器自动发送,服务器永远不能请求向其发送cookie。

    REST API通常是无状态的,因此应避免使用服务器端会话或客户端cookie。如果要指示用户只获取属于他们的资源,请使用Rails嵌套资源方法,这将导致调用,如:

    new_cookies = {"Cookie" => "mycookie=1234;myothercookie=4567"}
    Net::HTTP.get( URI.parse( http: //app1.website.com/users ),  new_cookies)
    
    http://abc.com/user/user001/books
    
    对于属于user001的所有书籍


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

    REST API通常是无状态的,因此您应该避免使用服务器端会话或客户端cookie。如果要指示用户只获取属于他们的资源,请使用Rails嵌套资源方法,这将导致调用,如:

    http://abc.com/user/user001/books
    
    对于属于user001的所有书籍



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

    我这样做了,收到了一个空哈希。也许我必须在application.rb、environment.rb中设置一些东西吗?如果您使用Firefox,我建议您安装Firebug()和Firecookie(),并确保您要查找的cookie实际上是在浏览器中设置的。我也已经这样做了。cookie没有问题:它们是存在的。所以你说你的浏览器有一个cookie,X代表你的域xyz.com,当你在浏览器中输入xyz.com/controller/action1时,你看不到cookie,但是,当您输入xyz.com/controller/action2并重定向到xyz.com/controller/action1时,您确实看到了cookies?我试图理解的是您所说的内部请求是什么意思?我这样做了,收到了一个空白哈希。也许我必须在application.rb、environment.rb中设置一些东西吗?如果您使用Firefox,我建议您安装Firebug()和Firecookie(),并确保您要查找的cookie实际上是在浏览器中设置的。我也已经这样做了。cookie没有问题:它们是存在的。所以你说你的浏览器有一个cookie,X代表你的域xyz.com,当你在浏览器中输入xyz.com/controller/action1时,你看不到cookie,但当您输入xyz.com/controller/action2并重定向到xyz.com/controller/action1时,您确实看到了cookies?我试图理解的是内部请求的含义?我尝试使用一个简单的GET HTTP请求“Net::HTTP.GET(URI.parse('HTTP://app1.website.com/users')”从app2到app1,以及在“app1/controllers/users\u controllers.rb”中,cookie不在后面(它们不在请求头中)。是否有可能我没有正确设置一些配置选项?您正在从服务器创建一个全新的请求,该请求现在就像一个新的客户端。您必须在请求头中手动设置cookie。看看下面的例子。有没有可能表现得不像一个新客户?如果是,怎么做?不,但是通过将来自原始客户端请求的所有cookie复制到新请求(HTTP.get)中,无论出于何种目的,它都是同一个用户。你确定吗?如果请求是从外部发出的,那么域内的cookie也不应从该域“内部”访问?我尝试使用一个简单的GET HTTP请求“Net::HTTP.GET(URI.parse('HTTP://app1.website.com/users'))”,从app2访问app1,在'app1/controllers/users\u controllers.rb'中,cookie不被遵循(它们不在请求头中)。是否有可能我没有正确设置某些配置选项?您正在从服务器创建一个全新的请求,该服务器现在就像一个新的客户端。您