Cached AJAX responses lose status metadata exposed through vm.route.response
Mantenedores costumam responder em até 8 dias
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 68/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- javascript
- Domínio
- web-dev
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- JavaScript
- Estrelas
- 31.5k
- Forks
- 5.8k
- Merge médio
- 7d 18h
- PRs com merge (30d)
- 9
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de docsifyjs/docsify
-
Query parameter values are truncated at a second equals signTalvez já em andamento @xu91102 assumiu há 23 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 8 dias
-
Bullet points beginning with inline math: subsequent text formatting not recognised correctlyAbertabug Triage
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 8 dias
-
In the Edge browser, the character `{docsify-updated}` is not replacedTalvez livre de novo @AmanUllah687 assumiu há 76 dias e não há nenhum pull request aberto. Abertawait for information
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
docsifyjs/docsify#2681 · 11 comentários ·
Mantenedores costumam responder em até 8 dias
-
Nested/Recursive includesAbertafeature request Triage
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 38/100
docsifyjs/docsify#2643 · 5 comentários ·
Mantenedores costumam responder em até 8 dias
-
Is it possible not to push unnecessary state when clicking an <a> element?Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertaneeds discussion
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
Mantenedores costumam responder em até 8 dias
Todas as issues de docsifyjs/docsify
Issues semelhantes
-
[APP/MODULE]Abertaenhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
awesome-android-root/awesome-android-root#195 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
subhranshudash13-dotcom/Contribo#74 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
qq15725/modern-screenshot#174 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 67/100
ThatGuySam/doesitarm#1114 ·