Rails 3中的HEAD HTTP请求

Gle*_*ich 6 ruby-on-rails ruby-on-rails-3

Rails 3当前将HEAD请求路由到匹配的GET路由.有一个头?请求的方法,但返回false,请求就像一个get请求.我可以检测请求是否是HEAD请求?

推理:我得到一个HEAD请求应该返回与get相同的标题,所以Rails想要执行完整的GET然后剃掉正文.但是,我可以遵循这个请求,而不会发出GET会发出的相同的DB调用等.这有意义吗?

Ben*_*Cox 2

可以使用request.head吗?判断是否是 HEAD 请求的方法:

http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-head-3F

一旦确定是这样,您还可以使用控制器的 head() 方法而不是典型的渲染:

http://guides.rubyonrails.org/layouts_and_rendering.html#using-head-to-build-header-only-responses

所以我只是检查request.head?在打扰数据库活动之前。然后使用

head :ok, :custom_header => 'value'
Run Code Online (Sandbox Code Playgroud)