17

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

4

5 回答 5

17

奇怪,我想知道 WEBrick 的 URI 长度限制是多少。你可以试试thin http://code.macournoyer.com/thin/。我有时在本地使用它进行开发,它似乎工作得很好。

于 2011-02-08T05:13:12.380 回答
11

正如 OmniAuth 的 railscast 236 中所提到的,WEBrick 在 OpenID 给出的长 url 上存在问题。对我有用的解决方案是将 Mongrel 添加到您的 gemfile 中。

宝石'杂种','1.2.0.pre2'

于 2011-02-09T04:36:30.983 回答
7

在目录中添加一个名为webrick.rbfile 的文件config\initializers

if defined?(WEBrick::HTTPRequest)
  WEBrick::HTTPRequest.const_set("MAX_URI_LENGTH", 10240)
end
于 2013-03-07T01:31:02.577 回答
3

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

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

于 2011-07-03T10:41:31.547 回答
0

我在使用Webbrick 的 Caseproof 的 DataTables gem和一个有很多列(> 15)的表中遇到了同样的问题。切换到瘦服务器也解决了我的问题。DataTables是一个用于创建表格的 javascript/jquery 插件。

于 2011-08-25T01:52:30.187 回答