【问题标题】:OmniAuth Google OpenID WEBrick::HTTPStatus::RequestURITooLargeOmniAuth Google OpenID WEBrick::HTTPStatus::RequestURITooLarge
【发布时间】:2011-02-07 21:21:08
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 webrick omniauth


    【解决方案1】:

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

    【讨论】:

    • 我不得不承认,这个网址很长……查询字符串中包含很多内容
    • 我会向 OmniAuth 提交一个错误,或者看看他们是否提供了不使用查询字符串的解决方案。
    • 绝对是 webrick 的限制。
    【解决方案2】:

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

    gem '杂种','1.2.0.pre2'

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这对我来说是最好的解决方案,因为它实际上适用于 webrick。
      【解决方案4】:

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

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

      【讨论】:

      • 通常使用 Webrick 进行调试,所以一个小猴子补丁不会伤害你;)
      • 是的,但它很丑,而且真的不需要这么低的限制……很好,他们已经修好了:)
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-19
        相关资源
        最近更新 更多