2011-02-15 75 views
1

我只从一些用户那里得到一个InvalidAuthenticityToken异常。当我检查错误时,我可以看到请求已将"\r\n"添加到authenticity_token参数(即:"authenticity_token"=>"YfYr7bzy1MFzNHPvrSOIdrYuuAG3SHZy/OBJyV3yUSg=\r\n")。Rails 3.0.3和InvalidAuthenticityToken

除了它是IE7之外,我对浏览器一无所知。

我有一种感觉,这是他们的防火墙做了一些要求。我认为一个聪明的解决方案是创建一个Rack中间件,如果它们存在,则删除换行符。任何人都可以告诉我该怎么做? (我没有Rack的经验)。

问候,

雅各

+0

我没有答案,但我已经阅读过有关IE和真实性标记的一般问题。直到你在这里得到答案,我推荐更多的网络和邮件列表搜索。 – 2011-02-15 14:19:37

回答

1

我已经调查了,我可以找到这个无解。它不是特别是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 

解决了这个问题。

相关问题