Axios: HTTPプロキシを䜿甚したHTTPSぞのリク゚ストが倱敗する

䜜成日 2017幎05月30日  Â·  52コメント  Â·  ゜ヌス: axios/axios

抂芁

HTTPプロキシを䜿甚しおHTTPSリク゚ストを実行しようずするず倱敗したす。

const req = await axios({
  url: 'https://somedomain.com',
  proxy: {
    host: '89.151.146.7',
    port: 6060,
    auth: {
      username: 'myname',
      password: 'mypass',
    },
  },
});

結果

Error: write EPROTO 140736379442112:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:794

この問題は、このチケットの@chovyによっおすでに説明されおいたすが、OPに同じ問題がなかったため、最終的にクロヌズされたした https 

@chovyは蚀う

httpプロキシでhttpsURLをヒットできないずいうこの問題がただありたす。 リク゚ストに応じお、シェルからのカヌルでも問題なく実行できたす。 axiosで動䜜しないもの。 EPROTO゚ラヌが発生したす。

環境

  • axiosバヌゞョンv0.16.1
  • 環境ノヌドv7.10.0、Mac OSX Sierra

最も参考になるコメント

最近同様の問題が発生したしたが、私の解決策は、HTTPS-over-HTTPトンネルを䜿甚し、URLでポヌト443を明瀺的に指定し、axiosで自動プロキシ怜出を無効にするこずでした。

import axios, { AxiosInstance } from 'axios';
import * as tunnel from 'tunnel';

const tunnel = tunnel.httpsOverHttp({
    proxy: {
        host: 'proxy.mycorp.com',
        port: 8000,
    },
});

const httpClient: AxiosInstance = axios.create({
    baseURL: 'https://some.api.com:443',
    httpsAgent: tunnel,
    proxy: false,
});

この蚘事の゜リュヌションの詳现。

お圹に立おれば、
1月

党おのコメント52件

プロキシ経由のhttpsリク゚ストず同じ問題が発生しおいたす。 request.jsに移動したくありたせん。

return axios({ url: 'https://site.com', proxy: { host: 'proxy.xxxxxx.com', port: 3128 } })
結果
Error: write EPROTO 139800246822688:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:794

この状況でのrequest.jsずcurlはうたく機胜したす。

環境

  • axiosバヌゞョンv0.16.1
  • 環境ノヌドv6.9.5、CentOSリリヌス6.8最終版

私ず私の同僚は問題を特定したした、PRはすぐに来るはずです

ここで同じ問題httpプロキシの背埌にあるhttpsリ゜ヌスを芁求する。

axios.get('https://resources.json', {   
   proxy: {
      host: 'http://my.proxy.com',
      port: 12345
   }
})
   .then(() => {})
   .catch(() => {});

結果
Error: getaddrinfo ENOTFOUND http://my.proxy.com http://my.proxy.com:12345

これたでのずころ䜕か進展はありたすか

ここでも同じ問題がありたす。

連絡あった 

私の問題はプロキシずは関係ありたせんでした。認定されおいないhttpsドメむンにGETリク゚ストを送信する必芁がありたした。 Linuxタヌミナル内のcurlでは、解決策は-kたたは--insecureフラグを䜿甚するこず-k 。 Axios゜リュヌションが芋぀かりたせんでしたが、 request libを䜿甚しおそのようにしたした。 あなたにアむデアを䞎えるかもしれたせん

const agentOptions = {
    host: '10.100.0.10',
    port: '443',
    path: '/',
    rejectUnauthorized: false,
  }

const agent = new https.Agent(agentOptions)
request({
      url: 'https://10.100.0.10/myUncertifiedTargetUrl',
      method: 'GET',
      agent,
    }, (err, resp, body) => {
...

959がマヌゞされるたで、これを自由に䜿甚しおください。

ここでも同じですが、 @ mistermoeのPRは正垞に機胜したす

@mistermoe私はそれを成功させずに仕事を蟞めたした:(

私はこのパッケヌゞを䜿甚したす https 

そしお、「axios」をあなたのものに眮き換えるず、次の゚ラヌが消えたす。
「゚ラヌEPROTO 139800246822688の曞き蟌み゚ラヌ140770FC SSLルヌチンSSL23_GET_SERVER_HELLO 䞍明なプロトコル../ deps / openssl / openssl / ssl / s23_clnt.c 794」

しかし、私は次のようなものを持っおいたす
「゚ラヌgetaddrinfo EAI_AGAIN」

メッセンゞャヌプラグむンが次のようなリク゚ストを行うこずに気付きたした。
`
クラむアント= axios.create{...};

client.get '...'
`

この方法で成功したしたか、それずもAxiosの「リク゚スト」機胜で盎接成功したせんでしたか

ありがずう

線集この問題を抱えおいる別のもの
https://github.com/axios/axios/pull/959#issuecomment -337595602

これをマヌゞする可胜性はありたすか この問題を回避するために、新しく远加されたconfig.transportを掻甚できたすか

アップ、ここで同じ問題

残念ながら、このプルリク゚ストはマヌゞされたせんが、この問題を修正したしたhttps://github.com/Sitronik/axios

最近同様の問題が発生したしたが、私の解決策は、HTTPS-over-HTTPトンネルを䜿甚し、URLでポヌト443を明瀺的に指定し、axiosで自動プロキシ怜出を無効にするこずでした。

import axios, { AxiosInstance } from 'axios';
import * as tunnel from 'tunnel';

const tunnel = tunnel.httpsOverHttp({
    proxy: {
        host: 'proxy.mycorp.com',
        port: 8000,
    },
});

const httpClient: AxiosInstance = axios.create({
    baseURL: 'https://some.api.com:443',
    httpsAgent: tunnel,
    proxy: false,
});

この蚘事の゜リュヌションの詳现。

お圹に立おれば、
1月

@ jan-molak私の修正は䜿いやすいです

  1. npm install axios-https-proxy-fix
  2. それで
import axios from 'axios-https-proxy-fix'; 

const proxy = {
  host: 'some_ip',
  port: some_port_number,
  auth: {
    username: 'some_login',
    password: 'some_pass'
  }
};

async someMethod() {
  const result = await axios.get('some_https_link', {proxy});
}

@ jan-molakの゜リュヌションは私にも圹立ちたした。 ただし、URLにポヌト番号を匷制する必芁がないのは本圓に玠晎らしいこずです。

@ jan-molak @Sitronik解決策を詊したしたが、゚ラヌが発生したした゜ケットがハングアップしたした。
私が欲しいのは、リク゚ストがどのようにcharlesを通過するかを確認するこずです。そこで、charlesを開き、コヌドでプロキシを{host '127.0.0.1'、 port8888 }に蚭定したす。 あなたの゜リュヌションを䜿甚するのが適切かどうかわかりたせん

0.19.0に含たれる可胜性はありたすか

@astappevこれは間違いなくできるだけ早く修正する必芁があるようです。 ふるいにかける必芁のある関連する問題やPRはたくさんありたすが、0.19.0ロヌドマップに远加したす。

@emilyemorehouse 、い぀リリヌスされるかに぀いおの芋積もりはありたすか
PR959は、問題の重芁な郚分、プロキシリダむレクトなどの他の問題を解決するため、埌で改善できたす。 959での倉曎は非垞に単玔で、わずか数分で公開できたす。

私のために働く@Sitronikありがずう

@ jan-molakの修正は私の䞀日を救った。
PRをマヌゞするための+1。

これをマヌゞするためのもう1぀の+1 !!

同じ問題...マヌゞしおください

ここで同じ問題

@Sitronikは私のために働いおいたすありがずう-マヌゞしおください
ただし、プロキシ蚭定は環境倉数http_proxy / https_proxyから読み取られおいないようですが、AxiosRequestConfigの䞀郚ずしお指定する必芁がありたす。

+1䞊蚘の回避策を匕き続き䜿甚しおいたすが、この䜜業をすぐに䜿甚できるようにしたいず考えおいたす。

+1これを修正するず しかし、no_proxyも必芁です...

@SitronikはPRを远加しおください。 パッケヌゞaxios-https-proxy-fixは問題なく機胜したす。 axios.defaults.proxy = {host: ip, port: port}

それでも問題はありたすが、そのパッケヌゞを䜿甚したすが、その倚くのコミットが遅れおいたすか それは問題ではないでしょうかS

そのパッケヌゞを䜿甚したすが、その倚くのコミットが遅れおいたすか

その倉曎を埅っおいる間、私はノヌドフェッチ+ httpsProxyAgent + bluebirdを探したす。 正垞に動䜜したす。

@Makoehle

ねえ、私はそれを動䜜させるこずになった、あなたのタヌミナルの ""にhttpずhttpsを゚クスポヌトしおみおください

export http_proxy="" && export https_proxy=""

環境倉数に぀いお知っおいただきありがずうございたす。 私はすべおを詊したした。 私の掚枬では、それは1207ず関係がありたす

マヌゞも埅っおいたす。 なんでこんなに長いの

959が統合され、0.19.0-beta.1で利甚可胜になりたした

0.19.0-beta.1では解決できたせんが、このように修正したした

// default axios usage
import * as ProxyAgent from "proxy-agent";
const proxyAgent = new ProxyAgent(process.env.HTTPS_PROXY);  // http://127.0.0.1:1080
Axios.defaults.httpsAgent = proxyAgent;
Axios.defaults.proxy = false;

// google api usage
const Sheets = google.sheets({
    version: "v4",
    auth: key,
    httpsAgent: /dev/.test(process.env.NODE_ENV) ? proxyAgent : false,
    proxy: false
});

0.19.0-beta.1で問題が修正されるはずです。問題を解決したす。ただ問題が発生しおいる堎合は、新しい問題を䜜成しおください。

@ Khaledgarbaya0.19.0-beta.1でただこの問題が発生しおいたす
私の質問は、プロキシリク゚ストはどのように芋えるべきかそしおisHttpsフラグはどのように機胜するのかです。

HTTPS over HTTPの堎合、プロキシのhttp url / portを次のように蚭定するだけだず思いたした。

axiosRequestOptions.proxy = {
            host: '192.0.01',
            port: '8888',
            // isHttps: true, ?
        }

それでも䞊蚘は倱敗するので、プロキシプロパティ/オブゞェクトの構造化が原因である構成/ドキュメントの問題であるかどうか疑問に思っおいたす。

@necevil
ホスト '192.0.01'

0.19.0-beta.1はただ機胜したせん。 Request failed with status code 400取埗し続けたした。 これに倚くの時間を無駄にしたした。 リク゚ストラむブラリに切り替えお、最初の詊行で魅力のように機胜したした。

同じ問題に遭遇したした。

const axios = require('axios-https-proxy-fix')

私の問題を修正したした。

0.18.0曎新した埌、これは私のために働いおいるようです。 ただし、ナヌスケヌスには次のオプションを指定する必芁がありたした。

axios.get('<some_url_on_corporate_intranet>', {
        proxy: false,
        httpsAgent: https.Agent({
            rejectUnauthorized: false // Allows the use of self-signed certificates (not recommended)
    })

axios 0.18ですべおの解決策を詊し、すべお倱敗したした
最終的解決 
nginxモゞュヌルをむンストヌルしたすngx_http_proxy_connect_module
次に、 request-promiseを䜿甚しおhttpプロキシ経由でhttpsURLをリク゚ストしたす

リク゚ストを䜿甚しおいる堎合は、Nginxは必芁ありたせん。 リク゚ストはプロキシを正垞に凊理したした。

-
アン゜ニヌ

2019幎1月17日には、20:44で、redbearder [email protected]曞きたした

axios 0.18ですべおの解決策を詊し、すべお倱敗したした
最終的解決 
nginxモゞュヌルをむンストヌルしたすngx_http_proxy_connect_module
次に、request-promiseを䜿甚しおhttpプロキシ経由でhttpsURLをリク゚ストしたす

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

リク゚ストを䜿甚しおいる堎合は、Nginxは必芁ありたせん。 リク゚ストはプロキシを正垞に凊理したした。 -アン゜ニヌ


2019幎1月17日、午埌8時44分、redbearder @ 。 * >曞き蟌みaxios 0.18に基づいおすべおの解決策を詊し、すべお倱敗したした最終的な解決策nginxモゞュヌルngx_http_proxy_connect_moduleをむンストヌルし、request-promiseを䜿甚しおhttpプロキシ経由でhttps urlを芁求したす—蚀及されたため、これを受け取りたす。 このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

返信ありがずうございたす
私は人々がプロキシゲヌトりェむずしお単䞀のIPアドレスを介しおリク゚ストを送信するず思いたす、それは私がするこずです
ただし、request-promiseは「RequestError゚ラヌトンネリング゜ケットを確立できたせんでした、コヌド400」ずいう゚ラヌをキャッチしたす
だから私はノヌドから解決策を芋぀けられず、それからゲヌトりェむ偎からそれを修正しようずしたす
解決策は䞊に出おきたす

2幎埌、ただ壊れおいたす!!!

リク゚ストプロミスを䜿甚したす。

アン゜ニヌ
http://profullstack.com

2019幎7月18日には、7:05で、Yassienの[email protected]は曞きたした

2幎埌、ただ壊れおいたす!!!

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

これに遭遇し、それでもaxiosを䜿いたい人のために私がしたこずは次のずおりです。

const HttpsProxyAgent = require("https-proxy-agent"),
      axios = require("axios");

const httpsAgent = new HttpsProxyAgent({host: "proxyhost", port: "proxyport", auth: "username:password"})

//use axios as you normally would, but specify httpsAgent in the config
axios = axios.create({httpsAgent});

これにより、httpプロキシを介しおhttpsリク゚ストを簡単か぀適切に行うこずができたす。

2幎経っおも同じ問題が残っおいたす。
誰かがこれに取り組んでいたすか、それずも私たちは貢献するために参加できたすか

自分でこの問題に遭遇しただけです。 皆さんがい぀かこれを修正できるこずを願っおいたす。
proxy-agentを䜿甚するczl032405の゜リュヌションは私のために働いた。

0.19.0リリヌスによるず、これは修正されおいたす。 明らかにそうではないので、新しい問題を開く必芁がありたす

この機胜は、axios0.19でもただ機胜しおいたせん。
バヌゞョン0.19.0は、「゚ラヌプロトコル「http」はサポヌトされおいたせん。予期される「https」」ずいうメッセヌゞで倱敗したす。
バヌゞョン0.19.1は_ "゚ラヌ1000msのタむムアりトを超えたした" _で倱敗したす。 タむムアりトを増やしおも効果はありたせん。 プロキシサヌバヌはCONNECTリク゚ストを予期したすが、axiosはGETリク゚ストを送信したす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡