Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 通过AJAX将JSON发布到rails应用程序会抛出无效的auth_令牌错误,即使提供了api_密钥_Ruby On Rails_Ajax_Json_Api_Post - Fatal编程技术网

Ruby on rails 通过AJAX将JSON发布到rails应用程序会抛出无效的auth_令牌错误,即使提供了api_密钥

Ruby on rails 通过AJAX将JSON发布到rails应用程序会抛出无效的auth_令牌错误,即使提供了api_密钥,ruby-on-rails,ajax,json,api,post,Ruby On Rails,Ajax,Json,Api,Post,我的Ajax调用: jQuery.post('http://acme.domain.vhost/objects.json', {object: data, api_key: "123"}, callback_function); 扔 ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken) 这很奇怪,因为当我使用CURL执行任何

我的Ajax调用:

jQuery.post('http://acme.domain.vhost/objects.json',
            {object: data, api_key: "123"},
            callback_function);

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken)
这很奇怪,因为当我使用CURL执行任何请求时:

curl -H 'Content-Type: application/xml' -d '<object><name>Test API Object</name></object>' http://acme.domain.vhost/objects.xml?api_key=123
当我将其复制到数据库中时,它将返回正确的用户。。。 那么,为什么ajax请求不起作用呢

更新:
将curl更改为POST,因此它实际上与ajax请求完全相同。

我想这只是因为您启用了
protect\u from\u fackery
,并且在api调用中没有传递任何
csrf\u令牌


我通常避免从
ApplicationController
派生我的API控制器,原因是:保持
csrf
安全性很好,但在API中没有用处。

但是curl命令工作得很好。curl甚至适用于相同的动作对象/创建。curl不需要csrf_令牌=\在您的curl请求中,您不创建任何东西,因此没有csrf问题。我将发布curl POSTalso示例,API控制器是实际的控制器。我正在使用restful身份验证。您是否让应用程序控制器中的“保护您免受伪造”?您的api控制器是否继承自ApplicationController?如果没有,您是否在控制器中添加了“防止伪造”?
SELECT * FROM `users` WHERE (`users`.`api_key` = '123') AND (users.deleted_at IS NULL OR users.deleted_at > '2012-02-29 23:12:25') LIMIT 1