Ruby OpenURI允许从https重定向到http

2mbi3lxu  于 2023-03-01  发布在  Ruby
关注(0)|答案(1)|浏览(114)

Ruby open-uri库会阻止从https到http的重定向,并显示以下错误
运行时错误(禁止重定向:网址:http://链接-〉网址:http://链接)
有没有办法修改这个行为来允许这些重定向?当然猴子补丁OpenURI.redirectable?似乎是一个明显的选择,但我宁愿避免这种情况,如果可能的话。这里有没有其他的选择?大多数现有的答案建议open_uri_redirections,但这个gem是未经维护的,不再工作。

du7egjpx

du7egjpx1#

open_uri_redirections gem没有做什么特别的事情,只是以一种丑陋的有状态方式对OpenURI.redirectable?进行猴子式修补。

  • 如果安全考虑不适用 *(即您没有发送cookie/referer)-只需重写即可。
def OpenURI.redirectable?(uri1, uri2)
  uri1.scheme.downcase == uri2.scheme.downcase ||
  (/\A(?:https?|ftp)\z/i =~ uri1.scheme && /\A(?:https?|ftp)\z/i =~ uri2.scheme)
end

这个函数唯一的变化是在time 2.4中允许http-〉https,所以我们可以假设这是非常稳定的。
但实际上,可以考虑功能更全面的http-client

相关问题