Request: рддреНрд░реБрдЯрд┐: рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдлрд╝рд░ре░ 2016  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: request/request

рдореИрдВ рдЪрд╛рд░реНрд▓реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рд░реНрд╡рд░ TSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рдЯреНрд░реИрдлрд╝рд┐рдХ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдХ рдирдХрд▓реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИред

NodeJS/рдЕрдиреБрд░реЛрдз рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИ рдФрд░ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХ рджреЗрддреА рд╣реИред

рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

                console.log('Response status: ' + response.statusCode);
                                                          ^
TypeError: Cannot read property 'statusCode' of undefined
    at Request._callback (/xxx:88:59)
    at self.callback (/xxx:199:22)
    at Request.emit (events.js:107:17)
    at Request.onRequestError (/xxx:821:8)
    at ClientRequest.emit (events.js:107:17)
    at TLSSocket.socketErrorListener (_http_client.js:271:9)
    at TLSSocket.emit (events.js:107:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:942:18)
    at TLSSocket.emit (events.js:104:17)
    at TLSSocket._finishInit (_tls_wrap.js:460:8)
Error: Error: self signed certificate in certificate chain
Help (please use Stackoverflow)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдирдХрд▓реА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

рдЗрд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдХрд▓реА рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рднреА 14 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ response рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗрд╡рд▓ рддрднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛рдПрдЧреА рдЬрдм рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖ рдЬрд╛рдПред
рдЕрдЧрд░ рдХреБрдЫ рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдереА рдЬреЛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред

error рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ response.statusCode рдХреЛ 400 рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рдпреЛрдЧ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

env NODE_DEBUG="*" node asdf.js

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдирдХрд▓реА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

рдЗрд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдХрд▓реА рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореЗрд░реА рддреНрд░реБрдЯрд┐ рд╕рдорд╛рди рдереА рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЕрдЪреНрдЫрд╛ рд╣реВрдБ рдзрдиреНрдпрд╡рд╛рдж @nmaxcom

рддреНрд░реБрдЯрд┐: рдкрд╣рд▓рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде
рддреНрд░реБрдЯрд┐ рдкрд░ (рдореВрд▓)
рдЯреАрдПрд▓рдПрд╕рд╕реЙрдХреЗрдЯ рдкрд░ред(_tls_wrap.js:929:36)
TLSSocket.emit рдкрд░ (events.js:104:17)
TLSSocket._finishInit рдкрд░ (_tls_wrap.js:460:8)

рдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛ рдПрдХ рд╡реИрдз рд╕реАрдП рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИрдВред
рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рдЕрдм рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

request.get({ uri: 'https://mydocker.com/v2/_catalog', rejectUnauthorized: false }

рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕реАрдП рдХреЗ рд▓рд┐рдП, рд╣рдо 'рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд = рдЧрд▓рдд' рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓рд╛рдЗрди 623 рдкрд░ request.js рдФрд░ node.js рдореЗрдВ _tls_wrap.js рджреЗрдЦреЗрдВред

рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рдП) рдЕрдкрдиреЗ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдкрд░ рдПрд╕рдПрд╕рдПрд▓ рдЯрд░реНрдорд┐рдиреЗрд╢рди рдХрд░реЗрдВ
рдмреА) рдПрдХ рдореБрдлреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ

рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕рднреА рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред
рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реЛрдЧрд╛ред

options.rejectUnauthorized = false рдореЗрдВ рдЕрдирдзрд┐рдХреГрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ
рд▓реЗрдХрд┐рди options.agentOptions.rejectUnauthorized = false

рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ

https://github.com/request/request/blob/v2.81.1/request.js#L257 -L259

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдХреЛрдб рджреЗрдЦреЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд┐рд▓ strictSSL рдмрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ rejectUnauthorized
рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдирд╛рдо рд╣реИ, рдмрд╕ rejectUnauthorized рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд░рдирдирд┐рдЧреНрди рдХреЛрдб рдХреЗ рджреМрд░рд╛рди рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ
рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐: рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐, рдЕрдирдкреЗрдХреНрд╖рд┐рдд 'var' (T_VAR), рд╕реА рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдХреА рдЙрдореНрдореАрдж: xampphtdocsPHPIMAPadminindex.php рд▓рд╛рдЗрди 146 рдкрд░

var рдиреЛрдЯрд┐рдлрд╝рд╛рдпрд░ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдореЗрд▓-рдиреЛрдЯрд┐рдлрд╝рд╛рдпрд░');
рд╡рд░ рдЗрдореИрдк = {
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо: "рдЖрдирдВрджрд▓рд┐рдВрдЯрд╛рд╕2017",
рдкрд╛рд╕рд╡рд░реНрдб: "xxxxxxxxx",
рд╣реЛрд╕реНрдЯ: "imap.gmail.com",
рдкреЛрд░реНрдЯ: 993, // рдЗрдореИрдк рдкреЛрд░реНрдЯ
рд╕реБрд░рдХреНрд╖рд┐рдд: рд╕рддреНрдп // рд╕реБрд░рдХреНрд╖рд┐рдд рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
};

рдиреЛрдЯрд┐рдлрд╝рд╛рдпрд░ (рдЗрдореИрдк)ред рдкрд░ ('рдореЗрд▓', рдлрд╝рдВрдХреНрд╢рди (рдореЗрд▓) {рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдореЗрд▓);})ред рдкреНрд░рд╛рд░рдВрдн ();
?>

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдЕрдирдзрд┐рдХреГрдд = рдЧрд▓рдд рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХреБрдЫ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрдиреЗрдХреНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирдзрд┐рдХреГрдд рдЧрд▓рдд рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдХрдиреЗрдХреНрд╢рди рдПрдордЖрдИрдЯреАрдПрдо рд╣рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП 100% рдкреНрд░рд╡рдг рд╣реИрдВ, рдореИрдВ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдиреЛрдбрдЬ рдЯреАрдПрд▓рдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкреАрдбрд╝рд┐рдд рд╣реИ рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рднреА рдлрд┐рдХреНрд╕ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ Google рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдкреЗрдЬ 5 рдкрд░ Google рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд╣рд░рд╛ рд╣реИ) рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЛ, рдХреНрдпрд╛ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ! !!!!! рдпрджрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ !!

rejectUnauthorized works in options.rejectUnauthorized = false
but not in options.agentOptions.rejectUnauthorized = false

рджреЛрдиреЛрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ

request.get({ uri: 'https://s3.amazonaws.com/...',
    rejectUnauthorized: false,
    // strictSSL: false,
    proxy: '127.0.0.1:8080',
    agentOptions: {
        rejectUnauthorized: false,
        // strictSSL: false,
    },
}, (...args) => {
    console.log(args);
    process.exit();
});

PS ssl рдбрд┐рд╕реЗрдмрд▓ рдлреНрд▓реИрдЧ рдСрди рдХреЗ рд╕рд╛рде ELECTRON рдХреЗ рднреАрддрд░ рд╕реЗ рдХреЛрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП, Kaspersky рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

https://github.com/request/request/issues/2061#issuecomment -182573171 рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ

рдкреНрд░рдХреНрд░рд┐рдпрд╛.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рджреЗрддрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lupo9557 picture lupo9557  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

codecowboy picture codecowboy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ORESoftware picture ORESoftware  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Aranir picture Aranir  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jasonxia23 picture jasonxia23  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ