Axios: "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐" рдХреЗ рд▓рд┐рдП рдХреЛрдб/рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЬреБрд▓ре░ 2016  ┬╖  69рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: axios/axios

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рд╕рд░реНрд╡рд░ рдХрдм рдбрд╛рдЙрди рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдЪрд┐рдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХреВрдВред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, axios рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╕рднреА axios рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ: https://github.com/mzabriskie/axios/issues/204

рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ err.message рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╣реИ:
if (err.message === "Network Error"){/*tell user the server is down*/}

рдпрд╣ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛ рдереЛрдбрд╝рд╛ рдЬреЛрдЦрд┐рдо рднрд░рд╛ рд╣реИ; рд╢рд╛рдпрдж рдХрд┐рд╕реА рджрд┐рди рдЗрд╕ рд╕рдВрджреЗрд╢ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдореЗрд░рд╛ рдХреЛрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ err.status рдпрд╛ err.code (рдпрд╛ err.???) рдХреЛ рдХреБрдЫ рдкреНрд░рд▓реЗрдЦрд┐рдд рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ?
рд╕рдмрдХреЛ рд╢реБрдХреНрд░реАрдпрд╛!

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

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рднреА рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 401 рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╖ рдореБрдЭреЗ рдпрд╣ рджреЗрддрд╛ рд╣реИ:

рддреНрд░реБрдЯрд┐ -> "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐"
error.response -> рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
error.status -> рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣реА рд╣реИрдВред рдПрдХ рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ #204 рдореЗрдВ рдХрд╣рд╛ рдерд╛, рдРрд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП Axios рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ ( new Error('Network error') ) рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЦрд░рд╛рдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб !== 2xx рдпрд╛ рдХрд╕реНрдЯрдо рдЪреЗрдХ) рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ status рд╕рдВрдкрддреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдЬреИрд╕реЗ:

axios.request(options).catch(function(error) {
  if (!error.status) {
    // network error
  }
});

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд╕реЗрдЯ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ (рдпрд╣ рдЕрдзрд┐рдХ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдорд▓рд╛ рд╣реИред

рдмреЗрд╢рдХ Node.js рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдФрд░ Node.js рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╣, рддреЛ Axios рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреА рдЧрдИ рдХреЛрдИ рднреА рддреНрд░реБрдЯрд┐ рдпрд╛ рддреЛ 1 рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ) рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реИ, рдпрд╛ 2) рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЕрдм рддрдХ, рдореИрдВ 404,500 рдЬреИрд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ .., рдлрд┐рд░ рднреА рдореБрдЭреЗ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ?
example.post('/foo', {request_id : 12345})
рддрдм (рдлрд╝рдВрдХреНрд╢рди (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) {})
рдХреИрдЪ (рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐); // рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐ред рд╕реНрдерд┐рддрд┐); // рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рддреНрд░реБрдЯрд┐ред рдХреЛрдб); // рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
});

рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ Axios рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреВрд▓ (рдХрд░реНрд▓, рдкреЛрд╕реНрдЯрдореИрди, рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдПрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 404 рддреНрд░реБрдЯрд┐ рдХреЛрдб рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдПрдкреАрдЖрдИ рдХреЙрд▓ рд╕рд░реНрд╡рд░ 500 рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ (рдпрд╛рдиреА, рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ( error.status); // рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд)ред

рдпрд╣ error.response.status ред

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рднреА рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 401 рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╖ рдореБрдЭреЗ рдпрд╣ рджреЗрддрд╛ рд╣реИ:

рддреНрд░реБрдЯрд┐ -> "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐"
error.response -> рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
error.status -> рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд

рдЬрдм рддреНрд░реБрдЯрд┐ "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐" рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ Axios рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рддрд╛рдХрд┐ 401 рддреНрд░реБрдЯрд┐ рдЗрд╕реЗ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реА рд╣реИред рд╢рд╛рдпрдж StackOverflow рдкрд░ рдХреБрдЫ рдирдореВрдирд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╢реНрди рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ?

рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрдкреАрдЖрдИ-рдЧреЗрдЯрд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВред рд╕рдорд╛рди рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдпрд╣ 4xx рддреНрд░реБрдЯрд┐рдпреЛрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 401) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рд╕реАрдУрдЖрд░рдПрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рд▓рд╛рдирдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рдирд┐рд╡рд╛рд░рдг рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛рдП! рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ рдЬреЛрдирд╛рдерди-рд╕реНрдЯреЛрди рдзрдиреНрдпрд╡рд╛рджред

@codygreen рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ https://forums.aws.amazon.com/message.jspa?messageID=763752

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рдЙрдкрд╛рдп рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ?

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдЬреЗрд╕реНрдЯ + рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЗ рд╕рд╛рде рдереАред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ package.json рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛:

"jest": {
    "testEnvironment": "node"
}

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдкрд░ рдЦрд╛рд▓реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рдПрдкреАрдЖрдИ рддреНрд░реБрдЯрд┐ рд╣реИред

axios.request(options).catch(function(error) {
  if (!error.response) {
    // network error
  } else {
    // http status code
    const code = error.response.status
    // response data
    const response = error.response.data
  }
});

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛? Axios рд▓реЛрдЧ рдХреБрдЫ рд╢реЛрд░ рдХрд░рддреЗ рд╣реИрдВ :(

рдореБрдЭреЗ рднреА рдЖрдЬ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:

js var url = "http://localhost:8000/"; Axios.get(url).then(function(response){ alert(response) }).catch(function(error){ alert(error) });

http://localhost :8000/ рдПрдХ JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдЕрдиреНрдп рд╣реЛрд╕реНрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдпрд╣ рдПрдХ рдХреЙрд░реНрд╕ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд▓рд╛рдЗрди 87, рдЗрд╕реЗ xhr рдПрдбреЙрдкреНрдЯрд░ рдореЗрдВ 'рдиреЗрдЯрд╡рд░реНрдХ рдПрд░рд░' рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЗрд╕реЗ рдХреИрд╕реЗ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝реА рдЬрд╛ рд╕рдХреЗ?
https://github.com/axios/axios/blob/d7f021b8d4cc50bfa0653011bc02452d234d1255/lib/adapters/xhr.js#L84 -L91

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

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ CORS рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ?

@codygreen рдХреНрдпрд╛ рдЖрдкрдиреЗ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛? рдореБрдЭреЗ рдЖрдЧреЗ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХрд╛ рдкрддрд╛ рднреА рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛ред

рдпрд╣рд╛рдВ рд╡рд╣реА рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ CORS рдерд╛ред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд░реНрд╡рд░ рд╕реЗ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд▓рд┐рдП (рдиреЛрдб рдореЗрдВ) рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯрдЕрдк рдирд╣реАрдВ рдерд╛ред Axios (рд╡рд┐рдлрд▓) рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде

      return axios.httpClients.server.post('/someUrl, {
        someData:some_data
      }).then(response => {
        console.log(response);
        //the following errors out because response is undefined
        if (response.data && response.data.success === true) {
        }
      }).catch(err => {
           //catch never triggered
            console.log(err)
      });

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЖрдкрдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХреНрдпрд╛ рд╣реИ? рдпрджрд┐ рдпрд╣ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ Fetch API рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдмреЙрдбреА рдЦрд╛рд▓реА рд╣реИред FETCH STANDERS рджреЗрдЦреЗрдВ, рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХреЛ 200 рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

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

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдЗрд╕реА рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ (рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ CORS )ред

рдлреНрд░рдВрдЯрдПрдВрдб рдкрд░, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ PUT рдпрд╛ POST рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ headers рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

const axiosParams = {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'application/json',
  },
};

axios.put(`${api.url}/like`, axiosParams)
  .then((response) => {
    // ...
  });

рдФрд░ рдмреИрдХрдПрдВрдб рдХреА рддрд░рдл, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде CORS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

// server.js
const express = require('express');
const app = express();

var cors = require('cors'); // Yep, you need to install this
app.use(cors()); // Works ЁЯОЙ

рд░реЗрдлрд░реА: рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ ред

рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рднреА рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдм Android рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрдкрдиреЗ axios рдкреЛрд╕реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ createError рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рдкрддрд╛ рдЪрд▓ рдЧрдпрд╛ рд╣реИред рдПрдХреНрд╕рд┐рдпреЛрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдПрд░рд░ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЛ рдореИрдВрдиреЗ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЫрд╡рд┐ рдСрдмреНрдЬреЗрдХреНрдЯ (рдПрдХреНрд╕рдкреЛ рд╕реЗ рдЗрдореЗрдЬрдкрд┐рдХрд░ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреЛ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЗ рдкрд░рдо рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ axios рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Axios рдХреЗрд╡рд▓ рдкрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдлреНрд▓реЛрдЯ, рдЗрдВрдЯ рдпрд╛ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЫрд╡рд┐ рдкрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рд╡рд╕реНрддреБ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрд░рдо рдХреЗ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐.рдпреВрд░реА рдЕрд╕рд╛рдЗрди рдХрд░рдХреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХреБрдЫ рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдорджрдж рдорд┐рд▓реЗрдЧреА, рдЬрд┐рдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдЖрдк axios рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ рдЕрдкрдиреЗ рдХреБрдЫ рдкреНрд░рдкрддреНрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдХреМрди рд╕рд╛ рд╣реИред

~ @codygreen @hammadzz рдХреНрдпрд╛ рдЖрдкрдХреЛ Amazon API рдЧреЗрдЯрд╡реЗ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛?~

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдЕрдЧрд░ рдХреЛрдИ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ рдФрд░ рд╕реАрдУрдЖрд░рдПрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ access-control-allow-origin рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ #204 рдореЗрдВ рдХрд╣рд╛ рдерд╛, рдРрд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП Axios рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ ( new Error('Network error') ) рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЦрд░рд╛рдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб !== 2xx рдпрд╛ рдХрд╕реНрдЯрдо рдЪреЗрдХ) рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ status рд╕рдВрдкрддреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдЬреИрд╕реЗ:

axios.request(options).catch(function(error) {
  if (!error.status) {
    // network error
  }
});

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд╕реЗрдЯ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ (рдпрд╣ рдЕрдзрд┐рдХ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдорд▓рд╛ рд╣реИред

рдмреЗрд╢рдХ Node.js рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдФрд░ Node.js рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдпрд╣рд╛рдВ Google рд╕реЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ API рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИред рдпрд╣ 2016 рд╕реЗ рд╣реИ, v <0.13ред

рдЖрдк рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ error.response рдЬрдм рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, error.response === undefined рдСрдлрд╝рд▓рд╛рдЗрди рд╕реНрдерд┐рддрд┐ рдФрд░ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП error.code === 'ECONNABORTED' рд╕рдордп рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдПред

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдЕрдЧрд░ рдХреЛрдИ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ рдФрд░ рд╕реАрдУрдЖрд░рдПрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

access-control-allow-origin: *

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдордд рдХрд░реЛред * рдмрдЬрд╛рдп рддрджрдиреБрд╕рд╛рд░ рдореВрд▓ рд╕реЗрдЯ рдХрд░реЗрдВред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ cors рд╕рдорд╕реНрдпрд╛ рдереА, рдпрджрд┐ рдЖрдк рд▓рд╛рд░реНрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ a

 ->middleware(['auth:api'])

рдЖрдкрдХреЛ рдЕрдиреНрдп рд╕рднреА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рдорд╛рд░реНрдЧ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ

->middleware(['auth:api','cors']);

рдореБрдЭреЗ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЬреИрд╕реЗ 10.0.0.12:8083)ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред

рддреЛ рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд╣реА рд╣реИ, рддреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдХреНрд╖реАрдп рдЕрдиреБрд░реЛрдз рд╕реЗ 0 рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

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

рдХрд┐рд╕реА рдХреЛ @joelnet рдПрдХ рдмрд┐рдпрд░ рдЦрд░реАрджрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕рдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдпрд╛:

https://github.com/axios/axios/issues/383#issuecomment -3086606088

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

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд░реБрдХ-рд░реБрдХ рдХрд░ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЛрдИ CORS рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред
рдореЗрд░рд╛ рдПрдкреАрдЖрдИ/рд╕рд░реНрд╡рд░ рдПрдХ .net рд╕рд░реНрд╡рд░ рд╣реИред
рдХрд┐рд╕реА рдФрд░ рдХреЛ рд░реБрдХ-рд░реБрдХ рдХрд░ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ?

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рдереА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ HTTP рдпрд╛ https рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреЛрдб рд╣реА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рддреНрд░реБрдЯрд┐ рдореЗрдЯрд╛ рдореЗрдВ, рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ @ рдЬреЛрдирд╛рдерди-рд╕реНрдЯреЛрди рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖред рдпрд╣ рдЕрдкрдиреЗ рджреЛрд╕реНрдд рдХреЛ рдлрдиреНрдпреБрди рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рднреЗрдЬрдиреЗ рдЬреИрд╕рд╛ рд╣реИ рдФрд░ рд╡рд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░ рдмрдВрдж рдерд╛ред рдпрд╣ рдХрд╣рддрд╛ рд╣реИ "рд╣рдореЗрд╢рд╛ рдЦреБрд▓рд╛" - рд╕реНрдЯреЛрд░ рдХреНрдпреЛрдВ рдмрдВрдж рдерд╛ред рдХреНрдпрд╛ рд╡реЗ рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реБрдП (404)? рдХреНрдпрд╛ рдХреЛрдИ рдмреАрдорд╛рд░ рд╣реИ (500)? рдХреНрдпрд╛ рдЙрдирдХреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдЦрддреНрдо рд╣реЛ рдЧрдИ (503)? рд╡рд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд╡реЗ рдЕрднреА рдмрдВрдж рд╣реИрдВ (рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐)!

рдореЗрд░реЗ рдПрдкреАрдЖрдИ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╕реНрдерд╛рдиреАрдп рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рддреЗрдЬреА рд╕реЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдореЗрдВ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЛ рдлрд╛рдпрд░ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рдереАред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдиреЗ рд╕рд╣реА рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХреА - рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ - рдореЗрд░реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рдиреЗ рдХреБрдЫ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рдерд╛ред

рдЕрдЧрд░ рдореИрдВ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреБрди : рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ (#164 рд╕реЗ

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
nginx

add_header 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐' * рд╣рдореЗрд╢рд╛ ;

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
nginx

add_header 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐' * рд╣рдореЗрд╢рд╛ ;

рдпрд╣ рдордд рдХрд░реЛред рдРрд╕рд╛ рдХрджрд╛рдкрд┐ рди рдХрд░реЗрдВред рдЖрдк рдЕрдкрдиреЗ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреНрд░реЙрдХреНрд╕реА рдкрд░ рдЗрдХрд╛рдИ рдЖрдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХреА рд╣реИ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ 413 рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ ... рдХреНрдпрд╛ рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрднрд╡ рд╣реИ?

Screenshot 2019-05-07 at 14 19 26

рдХреНрдпрд╛ рдЖрдкрдиреЗ response рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?
axios.get(url).then(stuff => console.log(Object.keys(stuff.response));

@ComputerCarl рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╕рдлрд▓рддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ? рдРрд╕рд╛ рдордд рд╕реЛрдЪреЛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ catch рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЖрдЬрдорд╛ рд╕рдХрддрд╛ рд╣реВрдВ ...

рдорд╛рдлрд╝ рдХрд░рдирд╛! рдореЗрд░рд╛ рд╕рд┐рд░ рдХрд╣реАрдВ рдФрд░ рдерд╛! рдХреИрдЪ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ ...catch(err => console.log(Object.keys(err.response));

Axios doc

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ;
err.response.data.message;

рдЬреЛ рдореИрдВрдиреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рднреЗрдЬрд╛ рдерд╛;

app.use(function (err, req, res, next) {
  res.status(err.status || 500);
  // this is err.response.data on Axios client
  res.send({ message: 'my custom error' });
});

@ComputerCarl рд▓реЗрдХрд┐рди error.response рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ, error.status :) рдЖрдк рдЗрд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА console.log ред рдХреЗрд╡рд▓ error.request XMLHttpRequest рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рдареАрдХ рд╣реИ.. рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рджреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХреНрдпреЛрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ (CORS рдХреЗ рдЕрд▓рд╛рд╡рд╛ 413)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ CORS рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП;

const cors = require('cors');
// ...
app.use(cors());

рд╕рд╛рде рд╣реА, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛

@ComputerCarl рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :-D CORS рдареАрдХ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдРрдк рдореЗрдВ рдПрдХ рд╣реА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓ рд╣реИрдВ рдФрд░ рдпреЗ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдкреАрдЖрдИ рд╕реЗ рд▓реМрдЯрд╛рдИ рдЧрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЙрдХреНрд╕реА рд╕реНрддрд░ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рд░рджреНрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдерд╛ рдЬреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдЬрд┐рд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рд╡рд╣ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝ рд░рд╣рд╛ рдерд╛ред рдЕрдВрдд рдореЗрдВ, рддреНрд░реБрдЯрд┐ res.send({ message: messageFromProxy }); рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦрдиреЗ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

рдЖрдкрдХреЛ рдХрд╛рдордпрд╛рдмреА рдорд┐рд▓реЗред

@ рдЬреЛрдирд╛рдерди-рд╕реНрдЯреЛрди рдиреЗ рдХрд╣рд╛, рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ Axios рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

error.data ;

@ balwant-sd рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣рд╛рдВ рднреЗрдЬреЗ рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ 413 рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди axios рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рднреА рдореИрдВ 413 рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ...
Screenshot 2019-06-03 at 15 42 12

рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд▓реЙрдЧрд┐рди рдкреЛрд╕реНрдЯ рдХреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ 401 рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, 401 рдХреЗ рдмрдЬрд╛рдп рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл 'рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐' рджреЗрддрд╛ рд╣реИред

рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдПрдХ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ CORS рддреНрд░реБрдЯрд┐ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ @ketysek рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ ngnix рдЗрд╕рдХреЗ рд▓рд┐рдП CORS рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдЗрд╕реЗ рдХрднреА рднреА axios error.response рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдПрдЧреАред рдпрд╣рд╛рдБ рдореИрдВ рдмреИрдХрдПрдВрдб рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдБ .. рдУрд╣ рд░реБрдХреЛ, рдореИрдВрдиреЗ рд╡рд╣ рдХрд┐рдпрд╛ ...

рд╣реИрд▓реЛ, рдореБрдЭреЗ рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрдЪрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рднреА axios рд╣рдореЗрд╢рд╛ "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐" рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ .catch (рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐) {}) рдкрд░ рдЬрд╛рддрд╛ рд╣реИ; рдмрд░рд╛рдмрд░ред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдореБрдЭреЗ рдЖрдЬ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдпрд╣ рдореБрджреНрджрд╛ рдЬреНрдпрд╛рджрд╛рддрд░ рдмреИрдХрдПрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ рдореВрд▓ рдХреНрд░реЙрд╕ рд╕рд╛рдЗрдЯ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ django рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ MIDDLEWARE рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ corsheaders рд╡рд░реНрдЧ рдХреЛ рд░рдЦрд╛ рд╣реИ:
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', //..etc ]
рдФрд░ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдореВрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ CORS_ORIGIN_WHITELIST рдмрдирд╛рдпрд╛ рд╣реИ:
CORS_ORIGIN_WHITELIST = [ "http://localhost:8081" , //..etc ]
рдпрд╣ django-cors-headers рдХреЗ рд▓рд┐рдП рд╣реИред рдпрджрд┐ рдЖрдк django рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ cors рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЙрдбреНрдпреВрд▓ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ #204 рдореЗрдВ рдХрд╣рд╛ рдерд╛, рдРрд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП Axios рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ ( new Error('Network error') ) рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЦрд░рд╛рдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб !== 2xx рдпрд╛ рдХрд╕реНрдЯрдо рдЪреЗрдХ) рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ status рд╕рдВрдкрддреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдЬреИрд╕реЗ:

axios.request(options).catch(function(error) {
  if (!error.status) {
    // network error
  }
});

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд╕реЗрдЯ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ (рдпрд╣ рдЕрдзрд┐рдХ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдорд▓рд╛ рд╣реИред

рдмреЗрд╢рдХ Node.js рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдФрд░ Node.js рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо axios.then рдореЗрдВ рдХреБрдЫ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЯреВ рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ" (рдЬреЛ рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдерд╛), рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА " рдирд┐рд░рдВрддрд░ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ"

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

axios(options).then(() => {
  const foo = '';
  foo = 'bar'; // will throw error "assignment to constant"
}).catch(error => {
  if (!error.status) {
    // "assignment to constant" will be considered as network error
  }
})

рдореИрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреИрд░-рдЕрдХреНрд╖реАрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ):

function isNetworkError(err) {
  return !!err.isAxiosError && !err.response;
}

рджреЗрдЦреЗрдВ https://github.com/axios/axios/pull/1419

рдореИрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреИрд░-рдЕрдХреНрд╖реАрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ):

function isNetworkError(err) {
  return !!err.isAxiosError && !err.response;
}

рджреЗрдЦреЗрдВ #1419

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХрд┐рдпрд╛
рдзрдиреНрдпрд╡рд╛рдж

@mifi рдХреНрдпрд╛ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреИрд░-рдЕрдХреНрд╖реАрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП isNetworkError рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕рд┐рд░реНрдл рдЗрд╕ рддрд░рд╣:

try {
  ...
  some code that calls axios
  ...
} catch (err) {
  if (isNetworkError(err)) return alert(тАШcheck your connection);
  throw err;
}

рдпрджрд┐ рдпрд╣ рдПрдХ CORS рддреНрд░реБрдЯрд┐ рд╣реИ рдФрд░ рдЖрдк рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

resources:
  Resources:
    # CORS for 4xx errors
    GatewayResponseDefault4XX:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
          gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
        ResponseType: DEFAULT_4XX
        RestApiId:
          Ref: 'ApiGatewayRestApi'

рд╣реИрд▓реЛ, рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, 'рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐':
https://stackoverflow.com/questions/58717673/axios-sending-network-error- while-status-is-200-ok

рдЬрдм рддреНрд░реБрдЯрд┐ "рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐" рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ Axios рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рддрд╛рдХрд┐ 401 рддреНрд░реБрдЯрд┐ рдЗрд╕реЗ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реА рд╣реИред рд╢рд╛рдпрдж StackOverflow рдкрд░ рдХреБрдЫ рдирдореВрдирд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╢реНрди рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ?

рдореБрдЭреЗ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореИрдВ 403 рдФрд░ рдПрдХ JSON рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк Axios рдореЗрдВ Network Error

рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреИрдЪ рдмреНрд▓реЙрдХ рдореЗрдВ err.response рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ

image

image

@narenderv7 рдореИрдВ рднреА

@WarisR рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░

рд╕рд░реНрд╡рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ 'Access-Control-Allow-Origin': '*'

@ketysek рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ

Screenshot from 2019-12-26 16-48-22

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛?

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ CORS рддреНрд░реБрдЯрд┐ рд╣реИ рдЬрд╣рд╛рдБ рд╕реНрдерд┐рддрд┐ 403 (4 * рдФрд░ 5 ) рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рд░рд╣реА рдереАNginx рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ 2 рдФрд░ 3 * рдХреЗ

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдВ рд╕реЗ nginx config рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:
add_header 'Access-Control-Allow-Origin' '*';
рдкреНрд░рддрд┐:
add_header 'Access-Control-Allow-Origin' '*' always;

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдореИрдВ рдЗрд╕реЗ axios 0.18.0 рдФрд░ 0.19.0 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдХрджрдо:
рдореИрдВрдиреЗ рдХрднреА-рдХрднреА рд╕рдорд╛рдкреНрдд рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИ рддреНрд░реБрдЯрд┐ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрдИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрдИ рдФрд░ рд╕рдВрджреЗрд╢ 'рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐' рд╣реИред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдПрдВрдб рддреНрд░реБрдЯрд┐ рдпрд╛ рдЕрдХреНрд╖ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ?

рдХрднреА-рдХрднреА рдпрд╣ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдбреА рдмреНрд▓реЙрдХрд░реНрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ...
incognito рдпрд╛ private рдореЛрдб рдЖрдЬрд╝рдорд╛рдПрдВ, рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ...

@ narenderv7 рд╣рд╛рдБ, рдпрд╣ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреА рдЧрд▓рддреА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдХреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреА рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛?

рдореБрдЭреЗ рдЙрди рджреЛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЪреЗрдХ рдХрд┐рдпрд╛ред рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ catch рдмреНрд▓реЙрдХ рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕реА рд╕рдорд╛рди рд╣реИред

рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ:
https://github.com/axios/axios/issues/1296

рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдореИрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреИрд░-рдЕрдХреНрд╖реАрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ):

function isNetworkError(err) {
  return !!err.isAxiosError && !err.response;
}

рджреЗрдЦреЗрдВ #1419

рдЯрд╛рдЗрдордЖрдЙрдЯ рддреНрд░реБрдЯрд┐ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рднреА рдореЗрд▓ рдЦрд╛ рд╕рдХрддреА рд╣реИред
image

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