Rails 3.0.3 и InvalidAuthenticityToken - PullRequest
       4

Rails 3.0.3 и InvalidAuthenticityToken

1 голос
/ 15 февраля 2011

Я только от некоторых пользователей получаю исключение InvalidAuthenticityToken. Когда я рассматриваю ошибку, я вижу, что в запрос добавлен "\r\n" к параметру authenticity_token (то есть: "authenticity_token"=>"YfYr7bzy1MFzNHPvrSOIdrYuuAG3SHZy/OBJyV3yUSg=\r\n").

Я ничего не знаю о браузере, кроме того, что это IE7.

У меня такое чувство, что их брандмауэр что-то делает с запросом. Я думаю, что разумным решением было бы создать промежуточное программное обеспечение Rack, которое удаляет разрывы строк, если они существуют. Кто-нибудь может показать мне, как это будет сделано? (У меня нет опыта работы в стойке).

С уважением,

Jacob

1 Ответ

1 голос
/ 17 февраля 2011

Я исследовал и не могу найти решения для этого. Это не IE или IE7 в частности. В итоге я сделал следующее промежуточное ПО:

class AuthenticityTokenFix
  def initialize(app)
    @app=app
  end

  def call(env)
    if env["rack.request.form_hash"] && env["rack.request.form_hash"]["authenticity_token"]
      env["rack.request.form_hash"]["authenticity_token"]=env["rack.request.form_hash"]["authenticity_token"].gsub("\r\n",'')
    end
    @app.call(env)
  end
end

Это решило проблему.

...