Ruby on rails Rails 3.0.3和InvalidAuthenticationToken

Ruby on rails Rails 3.0.3和InvalidAuthenticationToken,ruby-on-rails,ruby-on-rails-3,rack,middleware,Ruby On Rails,Ruby On Rails 3,Rack,Middleware,我只是从一些用户那里得到一个InvalidAuthenticationToken异常。当我检查错误时,我可以看到请求已将“\r\n”添加到authenticity\u token参数中(即:“authenticity\u token”=>“YfYr7bzy1MFzNHPvrSOIdrYuuAG3SHZy/OBJyV3yUSg=\r\n”) 我对浏览器一无所知,只知道它是IE7 我感觉是他们的防火墙对请求做了些什么。我认为一个聪明的解决方案是创建一个机架中间件,如果存在断线,它可以删除断线。有人能

我只是从一些用户那里得到一个InvalidAuthenticationToken异常。当我检查错误时,我可以看到请求已将
“\r\n”
添加到authenticity\u token参数中(即:
“authenticity\u token”=>“YfYr7bzy1MFzNHPvrSOIdrYuuAG3SHZy/OBJyV3yUSg=\r\n”

我对浏览器一无所知,只知道它是IE7

我感觉是他们的防火墙对请求做了些什么。我认为一个聪明的解决方案是创建一个机架中间件,如果存在断线,它可以删除断线。有人能告诉我怎么做吗?(我没有工作经验)

问候,


雅各布

我已经调查过了,我找不到解决办法。它不是特别的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

这就解决了问题。

我已经调查过了,但找不到解决办法。它不是特别的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

这就解决了问题。

我没有答案,但我以前读过IE和真伪令牌的一般问题。在你得到答案之前,我建议你多搜索网页和邮件列表。好的,谢谢你的提示。我什么也没做,只是在寻找答案,出于某种原因,我什么也没找到。我没有答案,但我以前读过IE和真伪令牌的一般问题。在你得到答案之前,我建议你多搜索网页和邮件列表。好的,谢谢你的提示。我什么也没做,只是在寻找答案,出于某种原因,我什么也没找到。