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://github.com/mzabriskie/axios/issues/662
@chovy ๋ ๋ค์๊ณผ
๋๋ ์ฌ์ ํ์ด ๋ฌธ์ ๊ฐ http ํ๋ก์๋ก https URL์ ์น ์ ์์ต๋๋ค. ๋๋ ์์ฒญ์์ ์ ํ ์ ์๊ณ ๋ํ ์์์ ์ปฌ๋ก ํ ์ ์์ต๋๋ค. 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์ด ๊ณง ์ ๊ณต๋ ๊ฒ์ ๋๋ค.
ํ๋ณด๋ ์ฌ๊ธฐ 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
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ต๋๋ค. 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๊ฐ ๋ณํฉ๋ ๋๊น์ง ์์ ๋กญ๊ฒ ์ฌ์ฉ ํ์ธ์ .
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค . btw
@mistermo ๋๋ ์ฑ๊ณตํ์ง ์๊ณ ๋ฐฉ๊ธ ์ผ์ ๋ ๋ฌ์ต๋๋ค :(
๋๋์ด ํจํค์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค : https://github.com/Yoctol/messaging-apis/tree/master/packages/messaging-api-messenger
๊ทธ๋ฆฌ๊ณ "axios"๋ฅผ ๊ทํ์ ๊ฒ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ค์ ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง๋๋ค.
"์ค๋ฅ: EPROTO 139800246822688 ์ฐ๊ธฐ: ์ค๋ฅ:140770FC :SSL ๋ฃจํด:SSL23_GET_SERVER_HELLO :์ ์ ์๋ ํ๋กํ ์ฝ:../deps/openssl/openssl/ssl/s23_clnt.c :794"
ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด ์์ต๋๋ค.
"์ค๋ฅ: getaddrinfo EAI_AGAIN"
Messenger ํ๋ฌ๊ทธ์ธ์ด ๋ค์๊ณผ ๊ฐ์ ์์ฒญ์ ํ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
`
ํด๋ผ์ด์ธํธ = axios.create({ ... });
client.get('...')
`
Axios "์์ฒญ" ๊ธฐ๋ฅ์ผ๋ก ์ง์ ์ฑ๊ณตํ์ต๋๊น, ์๋๋ฉด ์ฑ๊ณตํ์ง ๋ชปํ์ จ์ต๋๊น?
๊ฐ์ฌ ํด์!
ํธ์ง: ์ด ๋ฌธ์ ๊ฐ ์๋ ๋ ๋ค๋ฅธ ๊ฒ:
https://github.com/axios/axios/pull/959#issuecomment -337595602
์ด๊ฒ์ ํฉ์น ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น? ์ด ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ์๋ก ์ถ๊ฐ๋ config.transport๋ฅผ ํ์ฉํ ์ ์์ต๋๊น?
ups, ์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค!
๋ถํํ๋ ์ด pull ์์ฒญ์ ๋ณํฉ๋์ง ์์์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค. 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!!
๊ฐ์ ๋ฌธ์ ... ๋ณํฉํ์ญ์์ค!
์ฌ๊ธฐ์๋ ๊ฐ์ ๋ฌธ์
@Sitronik ๋๋ถ์ ์๋ํฉ๋๋ค. ๋ณํฉํ์ญ์์ค!
๊ทธ๋ฌ๋ ํ๋ก์ ์ค์ ์ ํ๊ฒฝ ๋ณ์(http_proxy / https_proxy)์์ ์ฝํ์ง ์๋ ๊ฒ ๊ฐ์ง๋ง AxiosRequestConfig์ ์ผ๋ถ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
+1 ์์์ ์ธ๊ธํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณ์ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ด ์์ ์ ์ฆ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
+1 ์ด๊ฒ์ ๊ณ ์น ๋? ํ์ง๋ง no_proxy๋ ํ์ํฉ๋๋ค...
@Sitronik์ PR์ ์ถ๊ฐํ์ญ์์ค. axios-https-proxy-fix
ํจํค์ง๊ฐ axios.defaults.proxy = {host: ip, port: port}
์ฌ์ ํ ๋ฌธ์ ์ ๋๋ค. ํด๋น ํจํค์ง๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ทธ ๋ค์ ๋ง์ ์ปค๋ฐ์ด ์์ต๋๊น? ๋ฌธ์ ๊ฐ ๋์ง ์์๊น์? :S
๊ทธ ํจํค์ง๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ทธ ๋ค์ ๋ง์ ์ปค๋ฐ์ด ์์ต๋๊น?
๋๋ node-fetch + httpsProxyAgent + bluebird๋ก ๊ฐ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ ์๋ํฉ๋๋ค.
@Makoehle
์ด๋ด, ๋๋ ๊ทธ๊ฒ์ ์๋ ์์ผฐ์ต๋๋ค. ํฐ๋ฏธ๋์์ http ๋ฐ https๋ฅผ ""๋ก ๋ด๋ณด๋ด์ญ์์ค.
export http_proxy="" && export https_proxy=""
env ๋ณ์์ ๋ํด ์๊ณ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๋๋ ๋ชจ๋ ๊ฒ์ ์๋ํ๋ค. ์ ์ถ์ธก์ผ๋ก๋ #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์ด ๋ฌธ์ ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ณ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
@Khaledgarbaya 0.19.0-beta.1์์ ์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด ์ง๋ฌธ์ ๋ด ํ๋ก์ ์์ฒญ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง์
๋๋ค(๊ทธ๋ฆฌ๊ณ isHttps ํ๋๊ทธ๋ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?).
HTTP๋ฅผ ํตํ HTTPS์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ํ๋ก์์ ๋ํ http URL/ํฌํธ๋ฅผ ๊ฐ๋จํ๊ฒ ์ค์ ํ๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค.
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 ํ๋ก์๋ฅผ ํตํด https URL์ ์์ฒญํ์ญ์์ค.
์์ฒญ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Nginx๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์์ฒญ ์ฒ๋ฆฌ ํ๋ก์๋ ๊ด์ฐฎ์ต๋๋ค.
-
์ํ ๋
2019๋ 1์ 17์ผ ์คํ 8์ 44๋ถ์ redbearder [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
axios 0.18์์ ๋ชจ๋ ์๋ฃจ์ ๊ณผ ๋ชจ๋ ์คํจํ ๊ธฐ๋ฐ์ ์๋ํ์ต๋๋ค.
๋ง์ง๋ง ํด๊ฒฐ์ฑ :
nginx ๋ชจ๋ ngx_http_proxy_connect_module ์ค์น
๊ทธ๋ฐ ๋ค์ request-promise๋ฅผ ์ฌ์ฉํ์ฌ http ํ๋ก์๋ฅผ ํตํด https URL์ ์์ฒญํ์ญ์์ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
์์ฒญ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Nginx๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์์ฒญ ์ฒ๋ฆฌ ํ๋ก์๋ ๊ด์ฐฎ์ต๋๋ค. - ์ํ ๋
โฆ
2019๋ 1์ 17์ผ ์คํ 8์ 44๋ถ redbearder @ . * > ์์ฑ: axios 0.18 ์ต์ข ์๋ฃจ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ ์๋ฃจ์ ์ ์๋ํ๊ณ ๋ชจ๋ ์คํจํ์ต๋๋ค. ์ต์ข ์๋ฃจ์ : nginx ๋ชจ๋ ngx_http_proxy_connect_module์ ์ค์นํ ๋ค์ request-promise๋ฅผ ์ฌ์ฉํ์ฌ http ํ๋ก์๋ฅผ ํตํด https URL์ ์์ฒญํฉ๋๋ค. ์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
๋ต์ฅ์ ๋ณด๋ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค
๋๋ ์ฌ๋๋ค์ด ํ๋ก์ ๊ฒ์ดํธ์จ์ด๋ก ๋จ์ผ IP ์ฃผ์๋ฅผ ํตํด ์์ฒญ์ ๋ณด๋ผ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์์ฒญ ์ฝ์์ "RequestError: ์ค๋ฅ: ํฐ๋๋ง ์์ผ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ฝ๋ 400" ์ค๋ฅ๋ฅผ ํฌ์ฐฉํฉ๋๋ค.
๊ทธ๋์ ๋
ธ๋์์ ์๋ฃจ์
์ ์ฐพ์ง ๋ชปํ ๋ค์ ๊ฒ์ดํธ์จ์ด ์ธก์์ ์์ ํ๋ ค๊ณ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๊ฒฐ์ฑ
์ด ์์ ๋์ต๋๋ค.
2๋ ์ด ์ง๋ ์ง๊ธ๋ ๊ณ ์ฅ!!!
์์ฒญ ์ฝ์์ ์ฌ์ฉํฉ๋๋ค.
์ํ ๋
http://profullstack.com
2019๋ 7์ 18์ผ ์ค์ 7์ 5๋ถ์ 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 ๋ฆด๋ฆฌ์ค์ ๋ฐ๋ฅด๋ฉด ์ด ๋ฌธ์ ๊ฐ ์์ ๋์์ต๋๋ค. ๋ถ๋ช ํ ์์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด์ด์ผํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ axios 0.19์์ ์ฌ์ ํ ๊นจ์ก์ต๋๋ค.
๋ฒ์ 0.19.0์ด ์คํจํ๊ณ _"์ค๋ฅ: ํ๋กํ ์ฝ "http:"๊ฐ ์ง์๋์ง ์์ต๋๋ค. "https:"๊ฐ ํ์ํฉ๋๋ค."_
๋ฒ์ 0.19.1์ _"์ค๋ฅ: ์๊ฐ ์ด๊ณผ 1000ms ์ด๊ณผ"_์ ํจ๊ป ์คํจํฉ๋๋ค. ์๊ฐ ์ด๊ณผ๋ฅผ ๋๋ ค๋ ๋์์ด ๋์ง ์์ต๋๋ค. axios๊ฐ GET
์์ฒญ์ ๋ณด๋ด๋ ๋์ ํ๋ก์ ์๋ฒ๋ CONNECT
์์ฒญ์ ์์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ต๊ทผ์ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ด ์๋ฃจ์ ์ HTTPS-over-HTTP ํฐ๋์ ์ฌ์ฉํ๊ณ URL์ ๋ช ์์ ์ผ๋ก ํฌํธ 443์ ์ง์ ํ๊ณ axios์์ ์๋ ํ๋ก์ ๊ฐ์ง๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ด์์ต๋๋ค.
์ด ๋ฌธ์ ์ ์๋ฃจ์ ์ ๋ํด ์์ธํ ์์๋ณด์ญ์์ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค,
1์