8

PaypalAdaptive を使用しています。ipn_notification を適切に送信します。ipnNotification アクション メソッドは次のとおりです。

def ipn_notification
    ipn = PaypalAdaptive::IpnNotification.new
    ipn.send_back(request.raw_post.to_json)

    print "=====================request.raw_post#{request.raw_post}=============="

    if ipn.verified?
        PaymentMailer.notify_unknown(request.raw_post).deliver
    else
        logger.info "IT DIDNT WORK"
    end
    render :nothing => true
end

しかし、それはエラーを返しています

WARNING: Can't verify CSRF token authenticity rails

この問題のヘルプ。

4

3 に答える 3

19

コントローラーで:

skip_before_filter :verify_authenticity_token, :only => [:ipn_notification]

読んですぐに-1を配布する人向け(重要な部分をスキップします:クライアントからのPOST呼び出しではありません...):

  • はい、セキュリティをスキップしますが... 後で読む...

  • はい、それが外部 Web サイトの POST 要求の唯一の方法です

  • はい、安全です。Paypal などから電話がかかってきたときは、明らかにパラメータとキーを確認します。

于 2012-08-16T12:44:46.373 に答える
15

セキュリティを損なうことなく、この問題の正しい解決策

ajax リクエストで、csrf トークン値をヘッダーとして送信します。

var csrfToken = $("meta[name='csrf-token']").attr("content");
$.ajaxSetup({
  headers: {
    'X-CSRF-Token': csrfToken
  }
});
于 2013-03-09T21:57:49.787 に答える
4

application.js に次の行を追加します。

//= require jquery_ujs

そして試してみてください。

于 2013-12-25T13:45:51.183 に答える