рдпрджрд┐ рд╣реЗрдбрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд░реЛрдз рдкрд░ рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред null
рдпрд╛ undefined
рдХрд░рдирд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ? рдЖрдк рдХрд┐рд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдЕрдЧрд░ рдореИрдВ 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 = {};
рдпрд╣ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдСрде рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рддрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрджрд░реНрд╢ рдирд╣реАрдВред
рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рд▓ рд╣реЛ рдЧрдпрд╛
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 рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ:
рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде:
Authorization: Bearer mytoken
рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде http://www.saasserviceprovider.com/notpublicapi рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВAWS S3 рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ URL рдореЗрдВ рдПрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ: X-Amz-Signature=blahblahblah
рд╕рдВрд▓рдЧреНрдиред
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
})
}
рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ ... рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдХреНрд╖ рдХреЗ рднреАрддрд░)
рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде:
Authorization: Bearer mytoken
рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде http://www.saasserviceprovider.com/notpublicapi рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ- AWS S3 рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ URL рдореЗрдВ рдПрдХ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ:
X-Amz-Signature=blahblahblah
рд╕рдВрд▓рдЧреНрдиред- 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 рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкрд░рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рд▓рд┐рдпреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ