mirror of
https://github.com/tenrok/axios.git
synced 2026-05-27 14:47:43 +03:00
fix(headers): fixed the filtering logic of the clear method; (#5542)
This commit is contained in:
@@ -33,11 +33,15 @@ function isValidHeaderName(str) {
|
||||
return /^[-_a-zA-Z]+$/.test(str.trim());
|
||||
}
|
||||
|
||||
function matchHeaderValue(context, value, header, filter) {
|
||||
function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
|
||||
if (utils.isFunction(filter)) {
|
||||
return filter.call(this, value, header);
|
||||
}
|
||||
|
||||
if (isHeaderNameFilter) {
|
||||
value = header;
|
||||
}
|
||||
|
||||
if (!utils.isString(value)) return;
|
||||
|
||||
if (utils.isString(filter)) {
|
||||
@@ -181,7 +185,7 @@ class AxiosHeaders {
|
||||
|
||||
while (i--) {
|
||||
const key = keys[i];
|
||||
if(!matcher || matchHeaderValue(this, this[key], key, matcher)) {
|
||||
if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
|
||||
delete this[key];
|
||||
deleted = true;
|
||||
}
|
||||
|
||||
@@ -242,17 +242,17 @@ describe('AxiosHeaders', function () {
|
||||
|
||||
headers.clear();
|
||||
|
||||
assert.notDeepStrictEqual(headers, {});
|
||||
assert.deepStrictEqual({...headers.toJSON()}, {});
|
||||
});
|
||||
|
||||
it('should clear matching headers if a matcher was specified', () => {
|
||||
const headers = new AxiosHeaders({foo: 1, 'x-foo': 2, bar: 3});
|
||||
|
||||
assert.notDeepStrictEqual(headers, {foo: 1, 'x-foo': 2, bar: 3});
|
||||
assert.deepStrictEqual({...headers.toJSON()}, {foo: '1', 'x-foo': '2', bar: '3'});
|
||||
|
||||
headers.clear(/^x-/);
|
||||
|
||||
assert.notDeepStrictEqual(headers, {foo: 1, bar: 3});
|
||||
assert.deepStrictEqual({...headers.toJSON()}, {foo: '1', bar: '3'});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user