Получить URL с префиксом имени пользователя: пароль @ - PullRequest
0 голосов
/ 17 июня 2019

Я использую net-http-persistent gem для извлечения страниц. Он прекрасно работает в большинстве случаев. Но недавно я заметил, что он возвращает 401 для URL с префиксом username: password @ например. https://username:password@somesite.com. Если я попробую другие варианты, такие как excon / curl, они получат такие страницы без проблем. Я видел журналы запросов, сделанных Net :: HTTP :: Persistent, и обнаружил, что net :: http полностью отбрасывает часть username: password при подключении к серверу.

Может кто-нибудь помочь мне, как заставить Net :: HTTP :: Persistent использовать username:password@ part.

---------------------- EDITED --------------------

Пример кода:

url = "https://user:pass@example.com/feed"
uri = URI(url)
http = Net::HTTP::Persistent.new
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.request uri
http.shutdown

response.code # yields 401 which it should not as url has username and password.


#Incase of excon, if you do 

response = Excon.get(url)
response.status # yields 200 as it is making use of username:password prefix

1 Ответ

2 голосов
/ 17 июня 2019

На основании этой проблемы , попробуйте код вроде:

uri = URI("https://example.com/feed")
req = Net::HTTP::Get.new(uri.request_uri)
req.basic_auth 'user', 'pass'

http = Net::HTTP::Persistent.new
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

response = http.request uri, req
http.shutdown

puts response.code
...