Faraday: Umgebungs-Proxy-Einstellungen überschreiben

Erstellt am 28. Nov. 2017  ·  5Kommentare  ·  Quelle: lostisland/faraday

Ich kann nicht herausfinden, ob es mit Faraday eine Methode zum Überschreiben der Proxy-Einstellungen von Umgebungsvariablen (http_proxy, https_proxy, no_proxy) gibt. Ich habe versucht, proxy=nil in einem Faraday.new Argument und einem Konfigurationsblock festzulegen, aber das scheint nicht zu funktionieren:

> c = Faraday.new('https://www.google.com', proxy: nil)
 => #<Faraday::Connection:0x00007fd1e2176180 @parallel_manager=nil, @headers={"User-Agent"=>"Faraday v0.13.1"}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @builder=#<Faraday::RackBuilder:0x00007fd1e2175d20 @handlers=[Faraday::Request::UrlEncoded, Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTPS https://www.google.com/>, @proxy=#<Faraday::ProxyOptions uri=#<URI::HTTP http://127.0.0.1:3128/>>, @temp_proxy=#<Faraday::ProxyOptions uri=#<URI::HTTP http://127.0.0.1:3128/>>>
> c = Faraday.new('https://www.google.com') { |c| c.proxy=nil 
c.adapter :net_http
}
(Object doesn't support #inspect)
> c = Faraday.new('https://www.google.com', proxy: '')
 => #<Faraday::Connection:0x00007fd1e28f2300 @parallel_manager=nil, @headers={"User-Agent"=>"Faraday v0.13.1"}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @builder=#<Faraday::RackBuilder:0x00007fd1e28f1d60 @handlers=[Faraday::Request::UrlEncoded, Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTPS https://www.google.com/>, @proxy=#<Faraday::ProxyOptions uri=#<URI::Generic >>, @temp_proxy=#<Faraday::ProxyOptions uri=#<URI::Generic >>>
> c = Faraday.new('https://www.google.com/') { |co|
2.4.2 :025 >     co.proxy = ''
2.4.2 :026?>   co.adapter :net_http
2.4.2 :027?>   }
 => #<Faraday::Connection:0x00007fe0af1bd4c8 @parallel_manager=nil, @headers={"User-Agent"=>"Faraday v0.13.1"}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @builder=#<Faraday::RackBuilder:0x00007fe0af1bd1d0 @handlers=[Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTPS https://nexus-gss.uscis.dhs.gov/>, @proxy=#<Faraday::ProxyOptions uri=#<URI::Generic >>, @temp_proxy=#<Faraday::ProxyOptions uri=#<URI::HTTP http://127.0.0.1:3128/>>>

Das letzte Ergebnis ist ProxyOptions.from(URI::Generic) oder etwas Ähnliches, das als Proxy zugewiesen wird, und es ergibt immer noch einen Nicht-Null-Proxy

https://github.com/lostisland/faraday/blob/master/lib/faraday/adapter/net_http.rb#L88 -L94

Scheint mit diesem Fall nicht wirklich richtig umzugehen. Irgendwelche Ideen?

(Während des Codetauchens schien es, dass das Parsing der Optionen wahrscheinlich nicht gut mit expliziten Null-Einstellungen umgeht)

feature help wanted

Hilfreichster Kommentar

@guille-moe Die Lösung, die ich plane, das @jeffb-stell-Problem zu beheben, sollte es Ihnen ermöglichen, diese Warnungen auch speziell zum Schweigen zu bringen.

Alle 5 Kommentare

Hallo @jeffb-stell,

Nach meinem Verständnis möchten Sie den Umgebungsproxywert für Faraday ignorieren.
Ich verstehe nicht wirklich, warum Sie das tun möchten, aber anscheinend wurde dieser Fall bisher nie in Betracht gezogen.
Wie Sie bereits selbst herausgefunden haben, werden die ProxyOptions ein wenig verrückt, wenn Sie nil und deshalb funktioniert keine Ihrer Lösungen.
Ich kann versuchen, dies mit einem PR zu beheben, aber das wird nur in Faraday 0.14.0 oder 0.14.1 verfügbar sein, wenn es Veröffentlichungen gibt wenn Sie etwas beitragen möchten!).

In der Zwischenzeit besteht eine mögliche schnelle Lösung darin, Ihre Anwendung mit überschriebener ENV-Variable zu starten. Stellen Sie einfach env -u http_proxy vor den Befehl, den Sie zum Starten verwenden. Zum Beispiel:

# For the Ruby console
env -u http_proxy irb

# For Rails
env -u http_proxy rails

Hallo @iMacTia ,

Gleiches Problem, ich möchte nicht wirklich etwas ändern / deaktivieren, außer mit dem warn auf no_proxy env (https://github.com/lostisland/faraday/blob/4d1ddc130bd224adf25a19eaf0e81fd236a47285/lib/ faraday/connection.rb#L460), wenn ich Faraday (oder ein Gem, das es ist) in einem Docker-Container unter macOS verwende, erhalte ich standardmäßig eine no_proxy Env: https://docs.docker.com/docker -for-mac/networking/ so viele warnen ....

Was ist die beste Lösung für mich oder die Verbesserung für Faraday? (Kann bald eine PR vorschlagen)

Könnte es etwas explizites wie ENV['FARADAY_SILENCE_INTERNAL_WARNINGS'] ?

Oder @guille-moe ist RUBYOPT=-W0 - Stille warn , was in Ihrem Anwendungsfall nicht praktikabel ist?

@guille-moe Die Lösung, die ich plane, das @jeffb-stell-Problem zu beheben, sollte es Ihnen ermöglichen, diese Warnungen auch speziell zum Schweigen zu bringen.

@guille-moe @jeffb-stell
Ich habe in #754 eine neue Einstellung eingeführt, Sie können jetzt die env-Proxy-Erkennung wie folgt deaktivieren:

Faraday.ignore_env_proxy = true # new setting, defaults to false
ENV['http_proxy'] = 'http://test.proxy.com:80'

conn = Faraday::Connection.new(....)
# conn will NOT use the env proxy

Ich habe die PR noch nicht zusammengeführt, wenn Sie einige Minuten damit verbringen könnten, sie in Ihre Anwendungen zu testen, dann würde ich mich sicherer machen, sie zusammenzuführen 😄
Auch Vorschläge zu weiteren Tests sind willkommen 👍

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen