@@ -10,10 +10,29 @@ import {
1010 logRequestStart ,
1111 runWithRequestDiagnostics ,
1212} from '~/utils/prod-diagnostics.server'
13+ import { docsContentNegotiationVaryHeader } from '~/utils/http'
1314
1415installProductionFetchProbe ( )
1516installProductionProcessProbe ( )
1617
18+ function isBrowserDocumentRequest ( request : Request ) {
19+ return (
20+ request . headers . get ( 'Sec-Fetch-Dest' ) === 'document' ||
21+ request . headers . get ( 'Sec-Fetch-Mode' ) === 'navigate'
22+ )
23+ }
24+
25+ function shouldRewriteDocsRequestToMarkdown ( request : Request , url : URL ) {
26+ const acceptHeader = request . headers . get ( 'Accept' ) || ''
27+
28+ return (
29+ acceptHeader . includes ( 'text/markdown' ) &&
30+ url . pathname . includes ( '/docs/' ) &&
31+ ! url . pathname . endsWith ( '.md' ) &&
32+ ! isBrowserDocumentRequest ( request )
33+ )
34+ }
35+
1736export default createServerEntry (
1837 wrapFetchWithSentry ( {
1938 async fetch ( request ) {
@@ -22,20 +41,24 @@ export default createServerEntry(
2241 logRequestStart ( context )
2342
2443 try {
25- const acceptHeader = request . headers . get ( 'Accept' ) || ''
26- if (
27- acceptHeader . includes ( 'text/markdown' ) &&
28- url . pathname . includes ( '/docs/' ) &&
29- ! url . pathname . endsWith ( '.md' )
30- ) {
44+ if ( shouldRewriteDocsRequestToMarkdown ( request , url ) ) {
3145 const mdUrl = new URL ( request . url )
3246 mdUrl . pathname = `${ url . pathname } .md`
3347 const mdRequest = new Request ( mdUrl , request )
3448 const mdResponse = await handler . fetch ( mdRequest )
49+ const markdownHeaders = new Headers ( mdResponse . headers )
50+ markdownHeaders . set ( 'Vary' , docsContentNegotiationVaryHeader )
51+
52+ const markdownResponse = new Response ( mdResponse . body , {
53+ status : mdResponse . status ,
54+ statusText : mdResponse . statusText ,
55+ headers : markdownHeaders ,
56+ } )
57+
3558 logRequestEnd ( context , mdResponse . status , {
3659 rewrittenToMarkdown : true ,
3760 } )
38- return mdResponse
61+ return markdownResponse
3962 }
4063
4164 const response = await handler . fetch ( request )
0 commit comments