菜鸟教程小白 发表于 2022-12-12 15:44:29

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


                                            <p><p>我正在创建一个带有 Ruby on Rails 后端的 iOS 应用程序。我已经完成了逻辑设置并在 Rails 中工作,并通过在 Web 浏览器中的测试进行了验证。我的 Rails 应用程序无法正确响应我的 iOS 应用程序,说出关于真实性 token 的内容。</p>

<p>我在 application.rb 中使用以下代码设置了一个真实性 token (添加此代码后我重新启动了服务器):</p>

<pre><code>protect_from_forgery :secret =&gt; &#39;some_secret_here&#39;
</code></pre>

<p>我使用以下代码通过 ASIHTTPRequest 将真实性 token 从 iOS 传递到 Rails:</p>

<pre><code>ASIFormDataRequest *request = ;
;
;
;
;
</code></pre>

<p>我有什么遗漏或做错了吗?</p>

<p>同样的代码在 allow_forgery_protection 设置为 false 时也能正常工作,所以我认为错误在于我尝试传递真实性 token 的方式。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>每个页面/请求的真实性 token 都不同,因此您需要找到一种方法以其他方式通过管道发送它。</p>

<p>也许尝试通过 header 发送它,如下所示:</p>

<pre><code>class ApplicationController &lt; ActionController::Base
    before_filter :send_form_authenticity_token

    private
      def send_form_authenticity_token
      response.headers[&#39;X-Authenticity-Token&#39;] = form_authenticity_token
      end
end
</code></pre>

<p>在您的第一个(和后续)请求的响应回调中,您需要执行以下操作:</p>

<pre><code>NSString *authenticityToken = [ objectForKey:@&#34;X-Authenticity-Token&#34;];
</code></pre>

<p>这意味着您执行的第一个请求是 GET 请求。 </p>

<p>最好有一个全局状态变量,但这是基本概念。 </p>

<p>顺便说一下,如果您的 rails 应用程序只是一个后端类型的应用程序,您就不需要防伪保护。</p>

<p>防伪保护可以避免 XSS 攻击,而这不会在 iPhone 上发生。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 如何让 Ruby on Rails 与 ASIHTTPRequest 一起使用?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/4506652/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/4506652/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 如何让 Ruby on Rails 与 ASIHTTPRequest 一起使用?