如何使用 RestClient 包装每个请求以使用 :verify_ssl => false?
How can I wrap every request with RestClient to use :verify_ssl => false?
我正在尝试
RestClient.add_before_execution_proc do |req, params|
req(:verify_ssl => false)
end
它不起作用。
如何使用 RestClient 包装每个请求以使用 :verify_ssl => false?
使用 params
而不是 req
。这些参数将传递给 RestClient.execute
,这是所有请求的入口点。
RestClient.add_before_execution_proc do |req, params|
params[:verify_ssl] = false
end
您也可以考虑创建一个简单的 class 来封装您的需求并执行 get/post/... rest without verify_ssl
(勾选https://github.com/rest-client/rest-client/blob/master/lib/restclient/request.rb#L160)
我会为 RestClient 调用编写自己的辅助包装器,而不是修改全局状态,因为全局更改使得阅读您的代码的人很难理解正在发生的事情。
例如:
def insecure_restclient_get(url, headers={}, &block)
RestClient::Request.execute(verify_ssl: false, method: :get, url: url, headers: headers, &block)
end
def insecure_restclient_post(url, payload, headers={}, &block)
RestClient::Request.execute(verify_ssl: false, method: :post, url: url, payload: payload, headers: headers, &block)
end
另请注意,如果您正在设置 verify_ssl: false
,您还不如根本不使用 https。
为了回应@alb-i986 对@AlexandreAngelim 的回答的评论,我编写了下面的猴子补丁,它包装了 RestClient::Request
class 的构造函数,因此它可以与最新的 RestClient
:
module RestClient
class Request
orig_initialize = instance_method(:initialize)
define_method(:initialize) do |args|
args[:verify_ssl] = false
orig_initialize.bind(self).(args)
end
end
end
我正在尝试
RestClient.add_before_execution_proc do |req, params|
req(:verify_ssl => false)
end
它不起作用。
如何使用 RestClient 包装每个请求以使用 :verify_ssl => false?
使用 params
而不是 req
。这些参数将传递给 RestClient.execute
,这是所有请求的入口点。
RestClient.add_before_execution_proc do |req, params|
params[:verify_ssl] = false
end
您也可以考虑创建一个简单的 class 来封装您的需求并执行 get/post/... rest without verify_ssl
(勾选https://github.com/rest-client/rest-client/blob/master/lib/restclient/request.rb#L160)
我会为 RestClient 调用编写自己的辅助包装器,而不是修改全局状态,因为全局更改使得阅读您的代码的人很难理解正在发生的事情。
例如:
def insecure_restclient_get(url, headers={}, &block)
RestClient::Request.execute(verify_ssl: false, method: :get, url: url, headers: headers, &block)
end
def insecure_restclient_post(url, payload, headers={}, &block)
RestClient::Request.execute(verify_ssl: false, method: :post, url: url, payload: payload, headers: headers, &block)
end
另请注意,如果您正在设置 verify_ssl: false
,您还不如根本不使用 https。
为了回应@alb-i986 对@AlexandreAngelim 的回答的评论,我编写了下面的猴子补丁,它包装了 RestClient::Request
class 的构造函数,因此它可以与最新的 RestClient
:
module RestClient
class Request
orig_initialize = instance_method(:initialize)
define_method(:initialize) do |args|
args[:verify_ssl] = false
orig_initialize.bind(self).(args)
end
end
end