Axios: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЗрдбрд░ рди рднреЗрдЬреЗрдВ

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

рдпрджрд┐ рд╣реЗрдбрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд░реЛрдз рдкрд░ рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред null рдпрд╛ undefined рдХрд░рдирд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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

transformRequest: [(data, headers) => {
    delete headers.common.Authorization
    return data
}]

рдореЗрд░реЗ рд▓рд┐рдпреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ

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

рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ? рдЖрдк рдХрд┐рд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЕрдЧрд░ рдореИрдВ axios.defaults.headers.common['Content-Type'] = 'application/json' рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЙрд╕ рд╣реЗрдбрд░ рдХреЛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЕрдирд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рджреВрд╕рд░реЗ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЖрдкрдиреЗ рд╣реЗрдбрд░ рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдХрд┐рдпрд╛? рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

axios.request('/path', {
  headers: {
    'Content-Type': null
  }
});

рд╣рд╛рдВред рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ method рдЪреВрдХ рдЧрдпрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╡рдЬрд╣ рд╕реЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛?

рдореИрдВрдиреЗ рд╡рд┐рдзрд┐ рдХреЛ рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ Object.assign() рдХрд╣реАрдВ рдХрд╣реАрдВ undefined рдореВрд▓реНрдп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред

@tyrsius рдЖрдк рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдкрд░реАрдХреНрд╖рдг рд╣реИ:

it('should remove default headers when config indicates', function (done) {
  var instance = axios.create();
  instance.defaults.headers.common['Content-Type'] = 'application/json';

  instance.post('/foo/bar/', {
    firstName: 'foo',
    lastName: 'bar'
  }, {
    headers: {
      'Content-Type': null
    }
  });

  getAjaxRequest().then(function (request) {
    testHeaderValue(request.requestHeaders, 'Content-Type', null);
    done();
  });
});

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рднреА рд╣реБрдИред
рдореИрдВ 'рд╕рд╛рдорд╛рдиреНрдп' рд╕реЗ рд╣реЗрдбрд░ 'рдкреНрд░рд╛рдзрд┐рдХрд░рдг' рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ axios.defaults.header рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдирд╛, рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рдирд╛ рдлрд┐рд░ рд╡ред
рдЬрдм рдпрд╣ рдмрдЧ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рддреЛ

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЕрдХреНрд╖реАрдп v0.14.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ Access-Control-Allow-Headers , рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХреБрдЫ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 15.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЬрдм рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ

headers: {
      'Content-Type': null
    }

рдпрд╣ рд╣реЗрдбрд░ рдорд╛рди рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЗрдбрд░ рдирд╛рдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

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

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ

    var instance = axios.create();
    instance.defaults.headers.common = {};

    instance.put(signedUrl, file, {headers: {'Content-Type': file.type}})
        .then(function (result) {
            console.log(result);
        })
        .catch(function (err) {
            console.log(err);
        });

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ

instance.defaults.headers.common = {};

рдпрд╣ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдСрде рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

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

545

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рд▓ рд╣реЛ рдЧрдпрд╛

delete axios.defaults.headers.common["Authorization"]; // or which ever header you have to remove

рдореЗрд░реЗ рдкрд╛рд╕ @SepiaGroup . рдЬреИрд╕реА рд╕рдЯреАрдХ рд╕реНрдерд┐рддрд┐ рд╣реИ
рдореИрдВрдиреЗ рдЗрд╕реЗ null рдФрд░ '' рд╕рд╛рде рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ AWS null рдХреЛ рдореЗрд░реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореЗрд░рд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ 403 рдорд┐рд▓рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ XHR рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рджреБрдЦреА рдХрд░рддрд╛ рд╣реИ :(

+1 рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рднреА рдЕрдЯрдХ рдЧрдпрд╛ред

+1

+1

рдореИрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (0.16.2) рдореЗрдВ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рджреБрдЦ рд╣реЛрддрд╛ рд╣реИ :(

рдмрд╕ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ

delete instance.defaults.headers.common.Authorization
````

the way below is not working.
----
I think we could create a logout method that recreate the axios instance to replace the old one.

рдЙрджрд╛рд╣рд░рдг рджреЗрдВ = axios.create ({рд╡рд┐рдХрд▓реНрдк})

рд╕рдорд╛рд░реЛрд╣: рд▓реЙрдЧрдЖрдЙрдЯ () {
рдЙрджрд╛рд╣рд░рдг = axios.create ({рд╡рд┐рдХрд▓реНрдк})
}
```

@ lzp4ever рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдиреЗ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдЬреЛрдбрд╝реЗ рд╣реИрдВ, рдпрд╛ рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЧреБрдЬрд░рдиреЗ рд╕реЗ рдкрд░реЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреА рдЕрдзрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХрд┐ рд╡рд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП?

рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╢рд╛рдпрдж @axelgenus рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрд▓реАрдирд░ рд╣реИ рдФрд░ рдкреВрд░реЗ Axios рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХрдо "

рдЧреБрдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдП рдмрд┐рдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ :)

+1

+1

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

+1

+1

+1 рдХреГрдкрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВред

+1

+1

+1

рд╣рдо рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдлреНрд░рдВрдЯ-рдПрдВрдб рдРрдкреНрд╕ рдХреЛ рдХрдИ рд░реЗрд╕реНрдЯ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рд╣реЗрдбрд░ рд╕реЗ рдСрдкреНрдЯ рдЖрдЙрдЯ рди рдХрд░ рдкрд╛рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

+1

+1

рд╣реЗрдбрд░, рдбреЗрдЯрд╛ рдФрд░ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЗрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВ:
transformRequest(data, headers) { delete headers.common.Authorization; return data; }

рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ, рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ:

axios.defaults.headers.common ["рдкреНрд░рд╛рдзрд┐рдХрд░рдг"] рд╣рдЯрд╛рдПрдВ; // рдФрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╣реЗрдбрд░ рдмрдирд╛рдПрдВ

@mukeshyadav рдЗрд╕

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

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

+1

transformRequest: [(data, headers) => {
    delete headers.common.Authorization
    return data
}]

рдореЗрд░реЗ рд▓рд┐рдпреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ

@aaronatmycujoo рдпрд╣ рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рдХрд╛рдореБрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЖрдЧреЗ рдПрдХреНрд╕рд┐рдпреЛрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рд╣рдЯ рдЬрд╛рддрд╛ рд╣реИред headers рдпрд╛ рдХреБрдЫ рдФрд░ рдХреА рдПрдХ рдЧрд╣рд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЬреЛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдЙрд╕рд╕реЗ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

@SepiaGroup рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ... рдпрд╣ рдХрд░реЗрдВ:

axios.defaults.headers.common = {};
axios.defaults.headers.common.accept = тАШapplication/jsonтАЩ;

рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди' рджреЗрдЦреЗрдВрдЧреЗ

+1 рдзрдиреНрдпрд╡рд╛рдж @axelgenus рдЙрд░ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд┐рдпрд╛

+1

@aaronatmycujoo FTW!!! рдЙрдирдХрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ ... ty!

S3 рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ (рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддрдВрддреНрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ)ред
@SepiaGroup рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░
@aaronatmycujoo рдпрд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдореИрдВ
рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВ!

+1

+1

+1

axios.defaults.headers.common = {};
axios.defaults.headers.common.accept = тАШapplication/jsonтАЩ;

рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !!!

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди "рдирд┐рд╖рд┐рджреНрдз рд╣реЗрдбрд░" рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред

  • Accept-Charset
  • Accept-Encoding
  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • Connection
  • Content-Length
  • Cookie
  • Cookie2
  • Date
  • DNT
  • Expect
  • Host
  • Keep-Alive
  • Origin
  • Referer
  • TE
  • Trailer
  • Transfer-Encoding
  • Upgrade
  • Via

рддреНрд░реБрдЯрд┐

рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

delete axios.defaults.headers.cummon["Authorization"];

рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ @ Putu-eka-mulyana рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЧрд▓рдд рдЬрдЧрд╣ рд╣реИред

delete axios.defaults.headers.common["Authorization"];

+1, рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд╕реЗрдЯ рд╣рдЯрд╛ рджреЗрдВ

+1, рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣рдЯрд╛рдПрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдП рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрдВ, рдмрд╕ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рд╢реВрдиреНрдп рдЬреИрд╕реЗ рдХреБрдЫ рдорд╛рди рдкрд╛рд╕ рдХрд░рдХреЗ

+1, рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣рдЯрд╛рдПрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдП рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрдВ, рдмрд╕ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рд╢реВрдиреНрдп рдЬреИрд╕реЗ рдХреБрдЫ рдорд╛рди рдкрд╛рд╕ рдХрд░рдХреЗ

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдкреБрдЯ рдЕрдиреБрд░реЛрдз рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП @aaronatmycujoo рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЕрднреА рднреА рдореЗрд░реЗ рдкреБрдЯ рдЕрдиреБрд░реЛрдз рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

// do not configure auth header
export const publicAxios = axios.create(...)

// configure auth header
export const authAxios = axios.create(...)

// no auth header present for public instance
publicAxios.put(...)

@codeclown рджреНрд╡рд╛рд░рд╛ null рдкрд╛рд╕ рдХрд░рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдорд╕рд▓рд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛?

@codeclown рджреНрд╡рд╛рд░рд╛ null рдкрд╛рд╕ рдХрд░рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдорд╕рд▓рд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛?

рд╣рд╛рдВ

рдХрд┐рддрдирд╛ рд▓рдВрдмрд╛ рд╕рдлрд░ рд╣реИред рдЖрд╢рд╛ рд╣реИ #1845 рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдорд░реНрдЬ рд╣реЛ рдЬрд╛рдПред

transformRequest: [(data, headers) => {
    delete headers.common.Authorization
    return data
}]

Axios рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ:

> рдпрд╣ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐рдпреЛрдВ 'рдкреБрдЯ', 'рдкреЛрд╕реНрдЯ', 'рдкреИрдЪ' рдФрд░ 'рдбрд┐рд▓реАрдЯ' рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реИ

рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде:

  1. Authorization: Bearer mytoken рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде http://www.saasserviceprovider.com/notpublicapi рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  1. AWS S3 рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ URL рдореЗрдВ рдПрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ: X-Amz-Signature=blahblahblah рд╕рдВрд▓рдЧреНрдиред

  2. AWS S3 рджреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рдХреЙрд▓ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:

    • рд╣реИрдбрд░: Authorization bearer token
    • рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ: X-Amz-Signature=blahblahblah

рди рддреЛ transformRequest , transformResponse , axios.interceptors.request , axios.interceptors.response рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЦреБрдж рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕ 3 рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди - рд╕рдВрднрд╡рддрдГ рдЕрдЧрд░ рдореИрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рдмрд╛рдж рдЕрдВрджрд░ рдЖ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ delete headers.Authorization рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЕрдиреБрд░реЛрдз рдПрдкреАрдЖрдИ/рдбрд╛рдХрд┐рдпрд╛/рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдХреЙрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

"рд╕рдорд╛рдзрд╛рди":

рдпрд╣ рдПрдХ рдмрджрд╕реВрд░рдд рдЕрдкреНрд░рднрд╛рд╡реА рд╕реНрдЯреАрдорд┐рдВрдЧ рдкреАрдУрдПрд╕ рд╣реИ... рд▓реЗрдХрд┐рди рдпрд╣ "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИтДв"ред рдХреНрдпрд╛ рдореБрдЭреЗ рдЕрдм рд╡реАрд╕реА рдлрдВрдбрд┐рдВрдЧ рдорд┐рд▓реЗрдЧреА?

  let retry = false;
  await axios({
    method: 'get',
    url: "http://www.saasserviceprovider.com/notpublicapi",
    headers: {
      'Authorization': "Bearer mytoken",
    }
  })
  .then((r) => {
    //return successful
  })
  .catch ((e) => {
    if (e.request.res.responseUrl.match(/s3.amazonaws.com/)) {
      retry = e.request.res.responseUrl;
    } else {
          //log error
    }
  })

  //Retry
  if (retry) {
    await axios.get(retry)
    .then((r) => {
        //return successful
      }
    })
    .catch((e) => {
       //log error
    })
  }

рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ ... рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдХреНрд╖ рдХреЗ рднреАрддрд░)

рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде:

  1. Authorization: Bearer mytoken рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде http://www.saasserviceprovider.com/notpublicapi рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  2. AWS S3 рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ URL рдореЗрдВ рдПрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ: X-Amz-Signature=blahblahblah рд╕рдВрд▓рдЧреНрдиред
  3. AWS S3 рджреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рдХреЙрд▓ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
  • рд╣реИрдбрд░: Authorization bearer token
  • рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ: X-Amz-Signature=blahblahblah

рди рддреЛ transformRequest , transformResponse , axios.interceptors.request , axios.interceptors.response рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЦреБрдж рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕ 3 рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди - рд╕рдВрднрд╡рддрдГ рдЕрдЧрд░ рдореИрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рдмрд╛рдж рдЕрдВрджрд░ рдЖ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ delete headers.Authorization рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЕрдиреБрд░реЛрдз рдПрдкреАрдЖрдИ/рдбрд╛рдХрд┐рдпрд╛/рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдХреЙрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ ... рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдХреНрд╖ рдХреЗ рднреАрддрд░)

@iyerusad рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рдмреЗрд╣рддрд░ рдХреЛрдИ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛? рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдореИрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕ рдлреЙрд▓реЛ-рдЕрдк/рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реВрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рд▓рд┐рдП)

@iyerusad рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рдмреЗрд╣рддрд░ рдХреЛрдИ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛? рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдореИрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕ рдлреЙрд▓реЛ-рдЕрдк/рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реВрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рд▓рд┐рдП)

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ - рдиреАрдЪреЗ рд╕реЗ рд╡рд┐рдХрд▓реНрдк рдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

_рдореИрдВрдиреЗ рдЬрд┐рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛:_
рдПред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реИрдкрд░/рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЕрдкрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдЕрдиреБрд░реЛрдз? рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ)ред рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╛рдл рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐рд╕реА рдЕрдиреНрдп http рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред

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

рд╕реА. рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдмреЗрд╡рдХреВрдл рд╣реВрдБ рдФрд░ axios рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ axios рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред

D. Axios рдХреЛ рдлрд┐рдХреНрд╕/рдкреИрдЪ рдорд┐рд▓рддрд╛ рд╣реИ?

@mikhoq @iyerusad рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ рд╡рд╛рд▓реЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЬрд┐рд╕реЗ рд╢рд╛рдпрдж #2844 рдореЗрдВ рдлрд┐рдХреНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ - #2855 рдХреЛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ред

@mikhoq рдХреГрдкрдпрд╛ рд╡рд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ

рддреЛ рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ transformRequest рдХреЛ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдпрд╣ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ред

transformRequest: [(data, headers) => {
    delete headers.common.Authorization
    return data
}]

рд▓реЗрдХрд┐рди рдбреЙрдХреНрд╕ рдХрд╣рддреЗ рд╣реИрдВ

// transformRequest рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
// рдпрд╣ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐рдпреЛрдВ 'рдкреБрдЯ', 'рдкреЛрд╕реНрдЯ', 'рдкреИрдЪ' рдФрд░ 'рдбрд┐рд▓реАрдЯ' рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реИ

рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ transformRequest рдХреЛ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИред рддреЛ рдЗрд╕ рд▓рд╛рдЗрди рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

"рдпрд╣ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐рдпреЛрдВ 'рдкреБрдЯ', 'рдкреЛрд╕реНрдЯ', 'рдкреИрдЪ' рдФрд░ 'рдбрд┐рд▓реАрдЯ' рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реИ"

рд╢рд╛рдпрдж, "рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ ..." рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ ....? рдпрд╣ рднреНрд░рд╛рдордХ рдЖрдИрдПрдордУ рд╣реИред

рдпрд╣ рд╕рд╣реА рд╣реИ:
рд╢реАрд░реНрд╖рд▓реЗрдЦ: {
'рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░': 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди',
'рдкреНрд░рд╛рдзрд┐рдХрд░рдг': рд╢реВрдиреНрдп,
}

рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ { headers: { 'Content-Type' = null } } рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛,
рддреЛ @axelgenus рд╕рд╣рд╛рдпрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдФрд░ рдЖрдЧреЗ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛:

import Axios from 'axios'
const client = Axios.create({
  // ...
  transformRequest: [(data, headers) => {
    // add required "Content-Type" whenever body is defined
    if (data) headers['Content-Type'] = 'application/x-www-form-urlencoded'
    return data
  }],
})
// completely remove "Content-Type" from instance by default
delete client.defaults.headers.common['Content-Type']
delete client.defaults.headers.post['Content-Type']
delete client.defaults.headers.put['Content-Type']
delete client.defaults.headers.patch['Content-Type']
// ...

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

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

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

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

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

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

Shu-Ji picture Shu-Ji  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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