Net::HTTP::Unauthorized - как мне получить заголовок WWW-Authenticate?
Учитывая код ниже...
Net::HTTP.start('localhost', 4000) do |http|
#
# usual stuff omitted for clarity
#
@response = http.request(req)
end
... если (с хорошим поведением) сервер возвращает ответ 401 (неавторизованный), как мне получить заголовок WWW_Authenticate?
Лучшее решение, которое у меня есть, совсем не хорошо...
class Net::HTTPUnauthorized
def get_header(h)
_return = nil
target = h.upcase
self.header.each_header do |k, v|
if k.upcase == target
_return = v
break
end
end
_return
end
end
Крис
1 ответ
Решение
Одним из вариантов будет использование Rack-Client от Halorgium, который оборачивает Net::HTTP
с конечной точкой стойки. Затем вы будете взаимодействовать с удаленным сервером, как если бы это было приложение Rack:
response = Rack::Client.get("http://localhost:4000/foo/bar.baz")
response.code
# => 401
response.headers['WWW-Authenticate']
# => 'Basic realm="Control Panel"'