首页 > 解决方案 > 使用 Ruby HTTPClient 进行身份验证失败

问题描述

我有这个非常简单的 Ruby 代码,它发出 Ruby POST 请求。由于某种原因,它创建了 2 个请求 - 一个身份验证错误和一个成功请求:

  def execute         
    request = HTTPClient.new()
    request.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE 
    request.set_auth('https://test.net/api', 'user', 'pass')

    request_body = File.read("requests/xml/req.xml")

    response = request.post('https://test.net/api', request_body, {'Content-Type' => 'application/xml', 'cache-control' => 'no-cache'}).body
    puts 'called'
  end

我想如果 HTTPClient 缺少一些配置?

你能告诉我如何解决这个问题吗?

标签: ruby

解决方案


这是预期的行为。除非需要,否则客户端不会发送凭据。当客户端获得 401 状态代码时,它会再次发送请求,但现在使用凭据。

您可以强制某些客户端在第一次请求时发送凭据。

Ruby 的 HTTPClientforce_basic_auth可以做到这一点。


推荐阅读