Cached AJAX responses lose status metadata exposed through vm.route.response
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 68/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript
- Domaine
- web-dev
Piste de recherche
Start at Fetch's contentFetched handler and trace the cache-hit path that invokes the success callback. Reproduce the case with the existing xhr-mock dependency in the Jest/JSDOM setup, then verify that a cached request passes the original content, options, and response metadata consistently with the first request.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug Report
Current behavior
The first AJAX request calls the success callback with (content, options, responseStatus), but a cache hit calls it with only (content, options). Fetch's contentFetched handler assigns that third argument to vm.route.response, so revisiting a cached page loses the response status available on the first visit.
On develop f34374b7423340e5ddec81c8ff565c26cc056fb5, a regression using the existing xhr-mock dependency shows:
get('/page.md').then((content, options, response) => {
// First request: response is { ok: true, status: 200, statusText: 'OK' }
get('/page.md').then((cachedContent, cachedOptions, cachedResponse) => {
// cachedResponse is undefined
});
});
Expected behavior
Cached content should carry the original response metadata too. Plugins should be able to inspect vm.route.response consistently across initial loads and revisits without adding cache-specific workarounds.
Suggested fix
Store the response status alongside the cached content and options, and pass all three to the callback on cache hits. This preserves the actual response status rather than synthesizing a 200 response.
Environment
Docsify 5.0.0 develop source, Jest/JSDOM on macOS. Reproduced with an HTTP response mock at the XMLHttpRequest boundary.
- Langage dominant
- JavaScript
- Étoiles
- 31.5k
- Forks
- 5.8k
- Merge moyen
- 2 j 14 h
- PR mergées (30 j)
- 5
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de docsifyjs/docsify
-
Query parameter values are truncated at a second equals signPeut-être pris @xu91102 l’a pris il y a 22 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 2 jours
-
Bullet points beginning with inline math: subsequent text formatting not recognised correctlyOuvertebug Triage
Difficulté 3/5 1-2 jours Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 2 jours
-
In the Edge browser, the character `{docsify-updated}` is not replacedPeut-être à nouveau libre @AmanUllah687 l’a pris il y a 75 jours, et aucune pull request n’est ouverte. Ouvertewait for information
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
docsifyjs/docsify#2681 · 11 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Nested/Recursive includesOuvertefeature request Triage
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
docsifyjs/docsify#2643 · 5 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Is it possible not to push unnecessary state when clicking an <a> element?Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverteneeds discussion
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de docsifyjs/docsify
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Unsampled pageload span is profiled when profileLifecycle is 'trace' (browser UI profiling)Peut-être pris @Jxxunnn l’a pris aujourd’hui. OuverteBrowser Waiting for: Product Owner
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
getsentry/sentry-javascript#25497 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
resource: destroying a resource calls AbortController.abort() without a reason, creating an AbortError with a stack trace each timePeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertearea: core
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
angular/angular#71422 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug status: needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
facebook/docusaurus#12739 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
factory-active task-identify-harness-labels-done task-identify-issue-type-done
Difficulté 1/5 1-3 heures Accessibilité débutants 68/100
vercel/ai#23537 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour