Ruby on rails 通过AJAX将JSON发布到rails应用程序会抛出无效的auth_令牌错误,即使提供了api_密钥
我的Ajax调用: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执行任何
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