0

使用curl从 shell 向 Ruby on Rails 应用程序发送 GET 就像一个魅力。但是,对于 PUT、POST 等,需要应对 CSRF 令牌。我似乎无法在 shell(或 PHP 中)中获得正确的语法来传递这些数据。我认为应该是这样的

curl -v -XPUT -i http://my-server:8080/some_command --data "somevalue=1" --data-urlencode X-CSRF-Token=$AUTH

但这不起作用。(也没有authenticity_token=$AUTH

请注意,当此页面的浏览器加载完成时,AUTH 会设置为浏览器中显示的会话变量。

当我这样做时,我得到一个 302 重定向到登录页面。

日志说,

WARNING: Can't verify CSRF token authenticity 
Completed 401 Unauthorized in 0ms

然后它将我重定向到登录页面(302)。

4

1 回答 1

0

您可以将控制器操作设置为跳过authentity_token 检查(您可能想要也可能不想这样做?)

# skip CSRF checking for json requests
skip_before_filter :verify_authenticity_token, 
  :if => Proc.new { |c| c.request.format == 'application/json' }
于 2013-07-07T22:44:55.053 回答