我正在使用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
对此问题的任何帮助。
答案 0 :(得分:18)
在您的控制器中:
skip_before_filter :verify_authenticity_token, :only => [:ipn_notification]
对于快速阅读并分发-1的人(跳过一个重要部分:它不是来自客户的POST电话......):
是的,它会跳过安全但是......继续阅读......
是的,这是外部网站POST请求的唯一方式
是的,这是安全的:当您接到Paypal或类似的电话时,您显然会检查参数和密钥。
答案 1 :(得分:14)
在不影响安全性的情况下解决此问题的正确方法
在您的ajax请求中,将csrf标记值作为标头发送。
var csrfToken = $("meta[name='csrf-token']").attr("content");
$.ajaxSetup({
headers: {
'X-CSRF-Token': csrfToken
}
});
答案 2 :(得分:4)
在application.js
中添加以下行//= require jquery_ujs
试试吧。