<p>request.get рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ "рд╣реЗрдбрд░ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рд╣реИрдВ"</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдорд╛рд░реНрдЪ 2016  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: request/request

рдпреЗ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:

require('request').get('http://www.test.com/╫Р╫С╫Т╫У.pdf');

рдХреБрдЫ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдпрд╣ TypeError('The header content contains invalid characters') рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдЕрдм рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ encodeURI рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ - рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдореЗрдВ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рд╕реЗ url рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ - рддреЛ рд╡реЗ рдПрдиреНрдХреЛрдбреЗрдб рд╣реЛ рднреА рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд╣реАрдВ рднреАред рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдВрддреНрд░ рд╣реИ? ( encodeURI(decodeURI(url)) )

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

рдмрд╛рдд рдпрд╣ рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, request рдХреЛ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдмреЗрдЬреЛрдбрд╝ рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдХрднреА рднреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрдЬрд╝рдорд╛/рдкрдХрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ request рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрдВрднреАрд░ рдмрдЧ рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ - рдореБрдЭреЗ рдЙрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреЛрдИ рдХреЛрд╢рд┐рд╢ рд╣реИ, рдпрд╛ .on('error', ...

рдореБрдЭреЗ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг 0.12.12 рдФрд░ рдЕрдзрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рд╡рд╣реА рдХреЛрдб 0.12.9 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

_http_outgoing.js:355
      throw new TypeError('The header content contains invalid characters');
            ^
TypeError: The header content contains invalid characters
    at ClientRequest.OutgoingMessage.setHeader (_http_outgoing.js:355:13)
    at new ClientRequest (_http_client.js:101:14)
    at Object.exports.request (http.js:49:10)
    at Object.exports.request (https.js:136:15)
    at Request.start (//application/node_modules/request/request.js:747:30)
    at Request.end (/application/node_modules/request/request.js:1381:10)
    at end (/application/node_modules/request/request.js:575:14)
    at Immediate._onImmediate (/application/node_modules/request/request.js:589:7)
    at processImmediate [as _immediateCallback] (timers.js:367:17)

рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдПрдХ рдХреБрдХреА рдкрд░ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рднреЗрдЬ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рдЗрд╕реЗ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ред

рдирд╣реАрдВ, рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдХ-рд▓рд╛рдЗрдирд░ рд╣реИ, рдХреЛрдИ рдХреБрдХреАрдЬрд╝ рдирд╣реАрдВ, рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рдЦрд╛рддреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ https://github.com/matt-major/do-wrapper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред

_http_outgoing.js:348
    throw new TypeError('The header content contains invalid characters');
    ^

TypeError: The header content contains invalid characters
    at ClientRequest.OutgoingMessage.setHeader (_http_outgoing.js:348:11)
    at new ClientRequest (_http_client.js:85:14)
    at Object.exports.request (http.js:31:10)
    at Object.exports.request (https.js:197:15)
    at Request.start (/home/pierre/Documents/freelance/upwork/dosh/node_modules/do-wrapper/node_modules/request/request.js:746:30)
    at Request.write (/home/pierre/Documents/freelance/upwork/dosh/node_modules/do-wrapper/node_modules/request/request.js:1345:10)
    at end (/home/pierre/Documents/freelance/upwork/dosh/node_modules/do-wrapper/node_modules/request/request.js:560:16)
    at Immediate._onImmediate (/home/pierre/Documents/freelance/upwork/dosh/node_modules/do-wrapper/node_modules/request/request.js:588:7)
    at processImmediate [as _immediateCallback] (timers.js:383:17)

рдмрд╛рдд рдпрд╣ рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, request рдХреЛ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдмреЗрдЬреЛрдбрд╝ рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдХрднреА рднреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрдЬрд╝рдорд╛/рдкрдХрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ request рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрдВрднреАрд░ рдмрдЧ рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдЕрдм рдПрдХ рдЕрдЪреНрдЫрд╛ 2h рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдерд╛ред
рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдбрдмреЗрд╕ рдХреЗ рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреЛ https://github.com/request/caseless рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдиреЗ рдореБрдЭреЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ 20-30 рдорд┐рдирдЯ рдХреА рд▓рд╛рдЧрдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ self.setHeader ред рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рди рддреЛ caseless рдкрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рди рд╣реА рдпрд╣ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ рд╣реЗрдбрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдФрд░ рди рд╣реА рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ caseless.httpify(self, self.headers) рдмрдВрджрд░ рд╡рд╕реНрддреБ рдХреЛ setHeader рд╕рд╛рде рдкреИрдЪ рдХрд░реЗрдЧрд╛

try/catch рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред self.req.end рдХреЛ рдЕрднреА рднреА рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрджрд┐ рдХреЙрд▓ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ рддреЛ рдмрд╛рдж рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдлрд┐рд░ рд╕реЗ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП)ред

рдХреБрдВрдж рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореБрдЭреЗ рдбрд░рд╛рддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдЙрддреНрдкрд╛рджрди рд╕реЗрд╡рд╛рдПрдВ 1.4k рд▓рд╛рдЗрди рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рддрд░реНрдХ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдХреЛрд╢рд┐рд╢/рдкрдХрдбрд╝ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд┐рдП рдмрд┐рдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИ рдШрдЯрдирд╛рдУрдВ рдХреА рд░реБрдм рдЧреЛрд▓реНрдбрдмрд░реНрдЧ рдорд╢реАрдиред рдЗрд╕рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдиреЛрдб 5.6.0 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╣реЗрдбрд░ рд╕рддреНрдпрд╛рдкрди рд╣реИ: https://github.com/nodejs/node/blob/v5.6.0/CHANGELOG.md

рдпрд╣рд╛рдБ рдлрд┐рдХреНрд╕реНрдб https://github.com/request/request/pull/2164

рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣реИ, .on('error', ... рдШрдЯрдирд╛ рдХреЗ рд╕рд╛рдеред рдЕрдЪреНрдЫрд╛!

рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмреЗрд╡рдХреВрдлреА рднрд░реА рдмрд╛рддреЛрдВ рдкрд░ рдРрдк рдХреЛ рдХреНрд░реИрд╢ рдХрд┐рдП рдмрд┐рдирд╛ request рдФрд░ рдЕрдзрд┐рдХ рдмреБрд▓реЗрдЯрдкреНрд░реВрдл рдмрдирд╛ рджреЗрдЧрд╛ред

рдЦреИрд░, рдЕрдм рдореИрдВ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЪреБрднрди рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реА рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдерд╛ рдФрд░ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд▓рдЧрд╛рддрд╛рд░ рдЕрд╕рдлрд▓ рд╣реЛрдВрдЧреЗред
рдореЗрд░реЗ 'рддреБрдЪреНрдЫ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ' рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдореИрдВ t.end() рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЕрдЧрд▓реА рдмрд╛рд░ рдореИрдВ рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдБрдЧрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╛рдБрдЧреВрдБрдЧрд╛ред

@TimBeyer рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ, рд╕рдВрд╕реНрдХрд░рдг 2.71 рдХреЛ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: +1:

@simov рд╕рдВрд╕реНрдХрд░рдг 2.71 рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдореИрдВ рдПрдХ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рдЦрдВрдбреВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ,

request({
              method: 'POST',
              headers: {
                 'test': '╫Р╫С╫Т╫У'
              },
              uri: apiUrl,
              qs: req.query,
              json: req.body,
              gzip: true
            }
            , function(error, response, body) {
               console.log('callback')
            })
            .on('response', function (response) {
             console.log(response)
            })
            .on('error', function (err) {
              console.log(err);
            });

рдЬрдм рдореИрдВ рдЗрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ

return self.req.write.apply(self.req, arguments)
                 ^

TypeError: Cannot read property 'write' of undefined
    at Request.write (/Users/muhammadkhurrumqureshi/Workspace/www/node_modules/request/request.js:1385:18)
    at end (/Users/muhammadkhurrumqureshi/Workspace/www/node_modules/request/request.js:565:18)
    at Immediate._onImmediate (/Users/muhammadkhurrumqureshi/Workspace/www/node_modules/request/request.js:594:7)
    at processImmediate [as _immediateCallback] (timers.js:383:17)

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@khurrumqureshi рдиреЗ рдпрд╣рд╛рдВ https://github.com/request/request/pull/2165 :+1 рддрдп рдХрд┐рдпрд╛:

рдореВрд▓ рд░реВрдк рд╕реЗ end рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди рд╣реА рдЪреЗрдХред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реА рд▓рд╛рдЗрди рдкрд░ start рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдм рддрдХ рдЗрд╕реЗ рдлреЗрдВрдХрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред рдЬрдм рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдмреЙрдбреА рд╣реИ write рдХреЛ end рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ред

@рд╕рд┐рдореЛрд╡ : +1:

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред

TypeError: The header content contains invalid characters
    at ClientRequest.OutgoingMessage.setHeader (_http_outgoing.js:348:11)
    at new ClientRequest (_http_client.js:85:14)
    at Object.exports.request (http.js:31:10)
    at Object.exports.request (https.js:199:15)
    at Request.start (/home/mymodule/node_modules/request/request.js:744:32)
    at Request.end (/home/mymodule/node_modules/request/request.js:1433:10)
    at end (/home/mymodule/node_modules/request/request.js:566:14)
    at Immediate.<anonymous> (/home/mymodule/node_modules/request/request.js:580:7)
    at runCallback (timers.js:570:20)
    at tryOnImmediate (timers.js:550:5)

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣реИрдВ:

headers:
      { 'x-backside-transport': 'OK OK,FAIL FAIL',
        connection: 'close',
        'transfer-encoding': 'chunked',
        'x-dp-local-file': 'true',
        'x-client-ip': '127.0.0.1,176.31.126.162',
        'x-global-transaction-id': '145630106',
        date: 'Tue, 08 Nov 2016 01:03:59 GMT',
        'www-authenticate': 'Basic realm="Gateway(Log-in)"',
        'x-archived-client-ip': '127.0.0.1',
        'content-type': '',
        'x-dp-tran-id': 'gateway' },
     rawHeaders:
      [ 'X-Backside-Transport',
        'OK OK,FAIL FAIL',
        'Connection',
        'close',
        'Transfer-Encoding',
        'chunked',
        'x-dp-local-file',
        'true',
        'X-Client-IP',
        '127.0.0.1,176.31.126.162',
        'X-Global-Transaction-ID',
        '145630106',
        'Date',
        'Tue, 08 Nov 2016 01:03:59 GMT',
        'WWW-Authenticate',
        'Basic realm="Gateway(Log-in)"',
        'X-Archived-Client-IP',
        '127.0.0.1',
        'Content-Type',
        '',
        'X-DP-Watson-Tran-ID',
        'gateway' ]

рдЕрдиреБрд░реЛрдз рдХреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣реИрдВ:

{ accept: 'application/json',
     authorization: 'Basic ...g==',
     referer: 'https://hostname.com/classify?text=%20So%20happy%20with%20this%20ЁЯСНЁЯСНЁЯСНЁЯСНЁЯСН',
     host: 'gateway.myclass.net' }

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ 3 рдЧреБрдирд╛ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг <U+1F44D> ред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ node.js https рдореЙрдбреНрдпреВрд▓ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдмрд╕ рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рд╡рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛ - рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ aws-sdk рдФрд░ рдпрд╣ рдореБрдЭреЗ рдШрдВрдЯреЛрдВ рддрдХ рдкрд╛рдЧрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдПрдХ PrvScan рд╡рд░реНрдг \u001b[5~ рдирд┐рдХрд▓рд╛ рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореЗрд░реА ~/.aws/credentials рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдерд╛, рдЬреЛ AWS рдЕрдиреБрд░реЛрдзреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ рдореЗрд░реА рд╡рд┐рдВрдбреЛрдЬ 7 рдорд╢реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреА, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдерд╛ рдХрд┐ рдореЗрд░реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдЦрд╛рддреЗ рдФрд░ рдХреБрдЫ рд╡рд┐рдВрдбреЛрдЬ рдХреИрд░реЗрдХреНрдЯрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдлрд╝рд╛рдЗрд▓ рдХреИрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдереАред рдпрд╣ рддрдм рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рдерд╛ рдЬрдм cat рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдИ рдереА, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ vi рд╕рд╛рде рдЦреЛрд▓рд╛ рддреЛ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧрд╛ред

рд╣рд╛рдБ, рдмрд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рдШрдВрдЯреЗ рд▓рдЧреЗ рдХрд┐ рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд┐рдВрдбреЛрдЬрд╝ рдорд╢реАрди рдкрд░ MINGW64 (рдЧрд┐рдЯ рдмреИрд╢) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ .... рдФрд░ рд╣реИрд▓реЛ ... рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ ????

рдореИрдВрдиреЗ рдмрд╕ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдорд╛рд░рд╛ рдФрд░ рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдПрдХ рдЫрд╡рд┐ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рджреВрд╕рд░рд╛ рд╕рд░реНрд╡рд░ рдХреНрдпрд╛ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреВрд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рднреБрдирд╛рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реВрдБ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛, рдЬрдм рдореИрдВ "рд╕реЗрдЯ" рдХреЛ "рдСрде" рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

it('ERROR, Wrong GET request', (done)=>{
    request(server).get("/api/")
    .set('Authorization', 'Bearer ' + tokenKey)
    .then(res=>{
        expect(res.statusCode).to.equal(404);
        done()
    }).catch(err=>done(err))
})

рдХрдВрд╕реЛрд▓ RES: рддреНрд░реБрдЯрд┐, рдЧрд▓рдд рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐ [ERR_INVALID_CHAR]: рд╢реАрд░реНрд╖ рд▓реЗрдЦ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг ["рдкреНрд░рд╛рдзрд┐рдХрд░рдг"]

рдХреЛрдб рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж:

it('ERROR, Wrong GET request', (done)=>{
    request(server).get("/api/")
    .auth('Authorization', 'Bearer ' + tokenKey) //**<---here is the change**
    .then(res=>{
        expect(res.statusCode).to.equal(404);
        done()
    }).catch(err=>done(err))
})

рдХрдВрд╕реЛрд▓ рд░реЗрд╕: рдУрдХреЗрдЖрдИ; рдкреА

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

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

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

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

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

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

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