gpt4 book ai didi

ruby-on-rails - 如何防止管道字符在 Rails 3/Ruby 1.9.2 中导致错误的 URI 错误?

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:55 24 4
gpt4 key购买 nike

在我的应用中实现 OAuth2 时,我需要处理如下 URI:

http://localhost:3000/sessions/create/?code=lorem|ipsum

不确定这是 Rails 3 还是 Ruby 1.9.2 的问题(可能是 URI.parse),但无论如何,WEBrick 都会启动 Error bad URI

有人知道解决方法吗?谢谢。

最佳答案

我最近遇到了同样的需求(和问题)。 On Rails 3 和 Ruby 1.9.2。

这对我们的暂存/生产环境 (nginx) 来说不是问题,但我很想知道 WEBrick 的问题所在。原来问题出在 URI::Parser.split 方法中,特别是它的模式匹配是如何使用 URI::REGEXP::PATTERN 常量播种的。

您可以通过将以下内容添加到 config/environments/development.rb 来“修复”此问题(假设您只在开发中使用 WEBrick .. 或者您可以将其放在 config/initializers 文件中)..

# this allows WEBrick to handle pipe symbols in query parameters
URI::DEFAULT_PARSER =
URI::Parser.new(:UNRESERVED => URI::REGEXP::PATTERN::UNRESERVED + '|')

注意:这是设置 :UNRESERVED => "-_.!~*'()a-zA-Z\d|"

关于ruby-on-rails - 如何防止管道字符在 Rails 3/Ruby 1.9.2 中导致错误的 URI 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3748838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com