0

导轨 3.1.3,红宝石 1.9.3p374

我正在尝试从一个控制器(通过 POST 从客户端接收数据,然后首先进行一些处理)向应用程序中的另一个控制器进行 POST,并得到 Timeout::Error。

我试过使用 Net::HTTP (下面的长表格,也做了快捷表格):

uri = URI.parse(credit_payments_url)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
auth_token = params[:authenticity_token]
request.set_form_data({:cc => "test", :authenticity_token => auth_token })
response = http.request(request)

和 HTTP 派对:

auth_token = params[:authenticity_token]
HTTParty.post(credit_payments_url, :body => {:cc => "test", :authenticity_token => auth_token})

在这两种情况下,我都会得到 Timeout::Error,并且在服务器输出中也看到了这一点:

Started POST "/payments/credit" for 127.0.0.1 at 2013-02-19 17:39:35 -0600
  Processing by PaymentsController#credit as HTML
  Parameters: {"cc"=>"test", "authenticity_token"=>"px+YzdbEfC5p2i3e5yjNT4EQy4WMA9aEWY/v2tfdFhA="}
WARNING: Can't verify CSRF token authenticity

credit_payments_url 是正确的url,有对应的路由。我一直收到 CSRF 警告,所以我从原始请求中添加了 :authenticity_token ,但 CSRF 警告仍然出现。我不确定这是否与 POST 超时有关。

我觉得可能有一些基本的网络或配置问题导致 POST 无法工作,但不能完全分辨它是什么。有任何想法吗?

4

1 回答 1

0

第一个 - 可能你只有一个工作人员,忙于这个请求,因此无法响应第二个请求。尝试在线程内发布帖子,或使用多个工人。

第二 - 你为什么要发布到应用程序本身?为什么不干掉代码,从另一个动作中提取所需的代码到一个方法中,然后在两个地方都调用它呢?

于 2013-02-20T01:04:49.303 回答