法拉第 - 我可以使用出站代理进行请求吗?

时间:2015-07-24 21:02:25

标签: ruby-on-rails ruby cloudfoundry faraday faraday-oauth

我的应用程序在localhost上运行良好。我们的Cloud Foundry设置在某种程度上没有出站连接...所以我被告知我可以通过代理获得出站连接。

在使用该代理的法拉第请求中,我需要更改哪些内容?

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

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

同样,app在localhost上运行得很好。没有与公司Cloud Foundry设置的出站连接。我已经绑定了服务,所以没关系。

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

1 个答案:

答案 0 :(得分:2)

试试这个

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