mirror of
https://github.com/arthurfiorette/axios-cache-interceptor.git
synced 2025-12-08 17:36:16 +00:00
Fix: Prevent If-None-Match and If-Modified-Since headers when override is true
Co-authored-by: arthurfiorette <47537704+arthurfiorette@users.noreply.github.com>
This commit is contained in:
parent
da02a9f6d4
commit
23cdaa2350
@ -182,7 +182,7 @@ export function defaultRequestInterceptor(axios: AxiosCacheInstance): RequestInt
|
||||
config
|
||||
);
|
||||
|
||||
if (cache.state === 'stale' || cache.state === 'must-revalidate') {
|
||||
if ((cache.state === 'stale' || cache.state === 'must-revalidate') && !overrideCache) {
|
||||
updateStaleRequest(cache, config as ConfigWithCache<unknown>);
|
||||
|
||||
if (__ACI_DEV__) {
|
||||
|
||||
@ -87,4 +87,26 @@ describe('ETag handling', () => {
|
||||
assert.equal(response2.config.headers?.[Header.IfNoneMatch], 'fake-etag');
|
||||
assert.equal(response2.headers?.[Header.ETag], 'fake-etag-2');
|
||||
});
|
||||
|
||||
it('No If-None-Match header when override is true', async () => {
|
||||
const axios = mockAxios({}, { etag: 'fakeEtag', 'cache-control': 'max-age=1' });
|
||||
const config = { cache: { interpretHeader: true, etag: true } };
|
||||
|
||||
// Initial request to populate cache
|
||||
const response1 = await axios.get('http://test.com', config);
|
||||
assert.equal(response1.cached, false);
|
||||
assert.equal(response1.status, 200);
|
||||
|
||||
// Sleep to make cache stale
|
||||
await mockDateNow(1000);
|
||||
|
||||
// Request with override should not send If-None-Match and should get 200, not 304
|
||||
const response2 = await axios.get('http://test.com', {
|
||||
cache: { ...config.cache, override: true }
|
||||
});
|
||||
assert.equal(response2.cached, false);
|
||||
assert.equal(response2.stale, undefined);
|
||||
assert.equal(response2.status, 200); // Should be 200, not 304
|
||||
assert.equal(response2.config.headers?.[Header.IfNoneMatch], undefined);
|
||||
});
|
||||
});
|
||||
|
||||
@ -135,4 +135,37 @@ describe('LastModified handling', () => {
|
||||
assert.notEqual(Number(secondMyHeader), Number.NaN);
|
||||
assert.notEqual(secondMyHeader, firstMyHeader);
|
||||
});
|
||||
|
||||
it('No If-Modified-Since header when override is true', async () => {
|
||||
const axios = mockAxios(
|
||||
{},
|
||||
{
|
||||
'last-modified': 'Wed, 21 Oct 2015 07:28:00 GMT',
|
||||
'cache-control': 'max-age=1'
|
||||
}
|
||||
);
|
||||
|
||||
const config: CacheRequestConfig = {
|
||||
id: 'same request',
|
||||
cache: { interpretHeader: true, modifiedSince: true }
|
||||
};
|
||||
|
||||
// Initial request to populate cache
|
||||
const response1 = await axios.get('url', config);
|
||||
assert.equal(response1.cached, false);
|
||||
assert.equal(response1.status, 200);
|
||||
|
||||
// Sleep to make cache stale
|
||||
await mockDateNow(1000);
|
||||
|
||||
// Request with override should not send If-Modified-Since and should get 200, not 304
|
||||
const response2 = await axios.get('url', {
|
||||
...config,
|
||||
cache: { ...config.cache, override: true }
|
||||
});
|
||||
assert.equal(response2.cached, false);
|
||||
assert.equal(response2.stale, undefined);
|
||||
assert.equal(response2.status, 200); // Should be 200, not 304
|
||||
assert.equal(response2.config.headers?.[Header.IfModifiedSince], undefined);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user