OmniAuth Google OpenID WEBrick :: HTTPStatus :: RequestURITooLarge

我使用OmniAuth允许用户使用他们的Google OpenID帐户登录。 当我尝试使用WEBrick以开发模式登录时,我收到WEBrick :: HTTPStatus :: RequestURITooLarge错误。 当我将它部署到我的rails主机时,它工作正常。 我应该使用不同的Web服务器而不是WEBrick吗?

奇怪,我想知道WEBrick的URI长度限制是什么。 你可以尝试thin http://code.macournoyer.com/thin/ 。 我有时会在本地使用它进行开发,看起来效果很好。

正如在OmniAuth的railscast 236中所提到的,WEBrick在OpenID给出的长URL时遇到了麻烦。 给我的解决方案是将Mongrel添加到您的gemfile中。

gem’mongrel’,’1.2.0.pre2′

将名为webrick.rb文件添加到config\initializers目录中。

 if defined?(WEBrick::HTTPRequest) WEBrick::HTTPRequest.const_set("MAX_URI_LENGTH", 10240) end 

已经在最新的ruby源中将url大小限制从1024更改为2083。 我希望包含此修复程序的更新ruby版本将很快发布:)

https://github.com/ruby/ruby/blob/trunk/lib/webrick/httprequest.rb#L291

我使用Webbrick和一个包含大量列(> 15)的表,遇到了与Caseproof的DataTables gem相同的问题。 切换到瘦服务器也解决了我的问题。 DataTables是一个用于创建表的javascript / jquery插件。