如何让Ruby on Rails与ASIHTTPRequest一起使用?

我正在使用Ruby on Rails后端创建一个iOS应用程序。我已经完成了逻辑设置并在Rails中工作,并通过在Web浏览器中进行测试进行了验证。我的Rails应用程序无法正确响应我的iOS应用程序,说明了真实性令牌。 我在application.rb中使用以下代码设置了一个真实性令牌(我在添加它之后重新启动了服务器):
protect_from_forgery :secret => 'some_secret_here'
我使用以下代码使用ASIHTTPRequest将真实性令牌从iOS传递到Rails:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"some_secret_here" forKey:@"authenticity_token"];
[request setPostValue:@"some value" forKey:@"some_parameter"];
[request setDelegate:self];
[request startAsynchronous];
有什么我遗失或做错了吗? 这个相同的代码可以正常工作,allow_forgery_protection设置为false,所以我假设错误在于我是如何尝试传递真实性令牌的。     
已邀请:
每个页面/请求的真实性令牌是不同的,因此您需要找到一种通过管道以其他方式发送它的方法。 也许尝试通过标题发送它,如下所示:
class ApplicationController < ActionController::Base
    before_filter :send_form_authenticity_token

    private
      def send_form_authenticity_token
        response.headers['X-Authenticity-Token'] = form_authenticity_token
      end
end
在您的第一个(和以下)请求的响应回调中,您需要执行以下操作:
NSString *authenticityToken = [[request responseHeaders] objectForKey:@"X-Authenticity-Token"];
这意味着您要做的第一个请求是GET请求。 拥有全局状态变量会更好,但这是基本概念。 顺便说一下,如果您知道,如果您的rails应用程序只是一个后端类型的应用程序,则不需要伪造保护。 伪造保护是为了避免XSS攻击,这在iPhone上不会发生。     

要回复问题请先登录注册