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ãšã©ãŒãçºçããŸãã
ãããã·çµç±ã®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ã¯ããŸãæ©èœããŸãã
ç§ãšç§ã®ååã¯åé¡ãç¹å®ããŸãããPRã¯ããã«æ¥ãã¯ãã§ã
PRã¯ãã¡ãhttps://github.com/mzabriskie/axios/pull/959
ããã§åãåé¡ïŒ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ç§ã®ä¿®æ£ã¯äœ¿ããããã§ãïŒ
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ãšé¢ä¿ããããŸã
ããŒãžãåŸ ã£ãŠããŸãã ãªãã§ãããªã«é·ãã®ïŒ
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
ãªã¯ãšã¹ããéä¿¡ããŸãã
æãåèã«ãªãã³ã¡ã³ã
æè¿åæ§ã®åé¡ãçºçããŸããããç§ã®è§£æ±ºçã¯ãHTTPS-over-HTTPãã³ãã«ã䜿çšããURLã§ããŒã443ãæ瀺çã«æå®ããaxiosã§èªåãããã·æ€åºãç¡å¹ã«ããããšã§ããã
ãã®èšäºã®ãœãªã¥ãŒã·ã§ã³ã®è©³çŽ°ã
ã圹ã«ç«ãŠãã°ã
1æ