ruby-on-rails - 如何使用 Shrine RemoteUrl 插件绕过 SSL 验证
问题描述
我在 Rails 应用程序中使用 Shrine RemoteUrl 插件从远程站点获取一些文件(pdf)。这个站点有一个旧的 https 证书,我遇到了一些这样的错误:
{:media=>["download failed: SSL_connect returned=1 errno=0 state=error: dh key too small"]}
我无法修改远程站点的 conf,所以我认为我需要绕过 SSL 验证。但是找不到办法。
我正在尝试在 Shrine 初始化程序文件中执行此操作,但我不知道如何将正确的选项传递给 Down::Http。Down::Http 后端使用 http.rb gem 实现下载(您可以使用它禁用证书验证)
Shrine.plugin :remote_url, max_size: 20*1024*1024, downloader: -> (url, max_size:, **options) do
Down::Http.download(url, max_size: max_size, **options) do |http|
http.follow(max_hops: 2).timeout(connect: 2, read: 2)
end
end
非常感谢任何帮助。谢谢!
解决方案
Down::Http.download
将所有选项转发到 http.rb,因此您可以传递相同的:ssl_context
选项:
ctx = OpenSSL::SSL::SSLContext.new
ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE
Down::Http.download(url, max_size: max_size, ssl_context: ctx, **options) do |http|
http.follow(max_hops: 2).timeout(connect: 2, read: 2)
end
推荐阅读
- amazon-web-services - 将 ASP.NET Core Web API 发布到 AWS 无服务器 Lambda 时出错:“policyArn”处的“AWSLambdaFullAccess”...成员的长度必须大于
- math - Coq 无法在 `match` 中推断类型参数
- sql - 如何避免配置单元查询中的重复
- r - 在 R 中,如何返回一行中的第 n 个最大数并将结果输出到新列,每行重复?
- python - 从 .txt 文件中读取文本并使用 python 插入字符串
- asp.net - 使用 .net core 和 razor,如何从静态页面导航回 asp 菜单
- python - 如何将 Django 表单字段名称列表传递给模板?
- reactjs - 如何设置 react createtableselect 以防止创建不在选项中的元素?
- php - 如何使用循环在 DataTables 中添加按钮
- anaconda3 - 无法初始化 anaconda 目录