【问题标题】:Faraday - Can I use outbound proxy for requests?Faraday - 我可以对请求使用出站代理吗?
【发布时间】:2015-07-24 21:02:25
【问题描述】:

我的应用在 localhost 上运行良好。我们的 Cloud Foundry 设置不知何故没有出站连接......所以有人告诉我我可以通过代理获得出站连接。

我需要对我的 Faraday 请求进行哪些更改才能使用该代理?

我的代码以及我应该如何连接。

url = "#{@config[:host]}#{@config[:login_path]}"
c = Faraday.new(:url => url,
                :request => { :timeout => 20, :open_timeout => 5},
                :ssl => {:verify => false}) do |f|
  f.request :url_encoded
  f.adapter Faraday.default_adapter
  f.response :json, :content_type => /\bjson$/
end

  @resp = c.post(url, {username: username, password: password,
    deviceId: @config[:device_id], deviceName: @config[:device_name], deviceType: @config[:device_type],
    appId: @config[:app_id], scope: @config[:scope]})

这就是我应该如何使用已设置的代理的方式。

“一旦您的服务被绑定,应用程序将在VCAP_SERVICES 环境变量中具有 JSON 格式的服务定义,您可以使用cf env x-explorer 命令查看格式。您的应用程序将需要使用给定的凭据解析和设置代理。

以下是凭据示例。您只能使用uri 或单个参数:hostportusernamepassword"

uri: http://2abcf906-127e-495c-ae71-c69712862292:616e714aea0cfc81de67ad1445cf1448e38d6a8db345a452c0e1ddc830b8f132@f.services.g1.app.cloud.my_company.net:49349
host: f.services.g1.app.cloud.my_company.net
port: 49349
username: 2abcf906-127e-495c-ae71-c69712862292
password: 616e714aea0cfc81de67ad1445cf1448e38d6a8db345a452c0e1ddc830b8f132

同样,应用程序在 localhost 上运行良好。与公司 Cloud Foundry 设置没有出站连接。我已经绑定了服务,这样就可以了。

我要添加什么来让我的出站请求通过代理?

【问题讨论】:

    标签: ruby-on-rails ruby cloud-foundry faraday faraday-oauth


    【解决方案1】:

    试试这个

    url = "#{@config[:host]}#{@config[:login_path]}"
    c = Faraday.new(:url => url,
                    :request => { :timeout => 20, :open_timeout => 5},
                    :ssl => {:verify => false}) do |f|
      f.request :url_encoded
      f.adapter Faraday.default_adapter
      f.response :json, :content_type => /\bjson$/url = "#{@config[:host]}#{@config[:login_path]}"
    c = Faraday.new(:url => url,
                    :request => { :timeout => 20, :open_timeout => 5},
                    :ssl => {:verify => false}) do |f|
      f.request :url_encoded
      f.adapter Faraday.default_adapter
      f.response :json, :content_type => /\bjson$/
      f.proxy = "http://2abcf906-127e-495c-ae71-c69712862292:616e714aea0cfc81de67ad1445cf1448e38d6a8db345a452c0e1ddc830b8f132@f.services.g1.app.cloud.my_company.net:49349"
    end
    
      @resp = c.post(url, {username: username, password: password,
        deviceId: @config[:device_id], deviceName: @config[:device_name], deviceType: @config[:device_type],
        appId: @config[:app_id], scope: @config[:scope]})
    
    end
    
      @resp = c.post(url, {username: username, password: password,
        deviceId: @config[:device_id], deviceName: @config[:device_name], deviceType: @config[:device_type],
        appId: @config[:app_id], scope: @config[:scope]})
    

    这里他们说如何根据法拉第请求设置代理

    conn = Faraday.new(url, ssl: {verify:false}) do |conn|
      # middleware ...
      conn.adapter <adapter>
    
      conn.proxy "http://localhost:80"
    end
    

    https://github.com/lostisland/faraday/issues/221

    【讨论】:

    • 谢谢。先生,我会在星期一早上试试!
    • 我应该用于代理的用户名和密码呢?看来我必须使用 Faraday 登录代理...请参阅我的问题中的第二个代码块。
    • 查看rubydoc.info/github/lostisland/faraday/Faraday/Connection :proxy - HTTP 代理选项的 URI、字符串或哈希(默认:“http_proxy”环境变量)。 :uri - URI 或字符串 :user - 字符串(可选) :password - 字符串(可选)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2020-07-29
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多