【发布时间】:2012-01-28 01:52:24
【问题描述】:
我想知道是否有办法知道对 rails 应用程序发出的 http 请求是否在 cUrl 中?
我有一个代码,它执行一些前端进程,并且只针对通过 Web 浏览器完成的 http 请求。现在,我希望能够将正常的 http 请求与 cUrl 请求区分开来,以便我可以仅为 cUrl 请求创建另一个进程。
提前致谢。
【问题讨论】:
标签: ruby-on-rails curl httprequest
我想知道是否有办法知道对 rails 应用程序发出的 http 请求是否在 cUrl 中?
我有一个代码,它执行一些前端进程,并且只针对通过 Web 浏览器完成的 http 请求。现在,我希望能够将正常的 http 请求与 cUrl 请求区分开来,以便我可以仅为 cUrl 请求创建另一个进程。
提前致谢。
【问题讨论】:
标签: ruby-on-rails curl httprequest
if request.env["HTTP_USER_AGENT"] =~ /curl/i
在您的控制器中应该可以解决问题。或者您可以使用用户代理选项在路由级别执行此操作:
get '/resource' => 'Controller#curl_logic', constraints: {user_agent: /curl/i}
get '/resource/' => 'Controller#view_logic' # everything else
【讨论】:
您可以查看 HTTP 请求中的用户代理,但这只有在 curl 客户端不覆盖它时才有效,这很容易做到。如果您只为可以信任用户代理的“友好”客户端执行此操作,那很简单。请参阅one of the better resources for rails routing 中的第一个示例。
【讨论】: