Skip to content

Commit 8a65c9c

Browse files
committed
Fixed Content-Type header sent by NextJS behind a proxy server
1 parent 9defa3f commit 8a65c9c

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

middleware.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
//
22
// Mécanisme de routage pour les pages de l'application.
33
//
4+
import mime from "mime";
45
import { Prisma } from "@prisma/client";
56
import createIntlMiddleware from "next-intl/middleware";
67
import { NextRequest, NextResponse } from "next/server";
@@ -39,7 +40,7 @@ export default async function middleware( request: NextRequest )
3940
new URL(
4041
`${ process.env.__NEXT_ROUTER_BASEPATH }/api/file/${ identifier }/${ request.nextUrl.search }`,
4142
request.url
42-
),
43+
).href.replace( "https", "http" ),
4344
{ headers: request.headers }
4445
);
4546

@@ -59,8 +60,8 @@ export default async function middleware( request: NextRequest )
5960
const content = await fetch(
6061
new URL(
6162
`${ process.env.__NEXT_ROUTER_BASEPATH }/files/${ file.userId }/${ file.id }/${ file.versions[ 0 ].id }.${ extension }`,
62-
request.url
63-
).href,
63+
data.url
64+
),
6465
{ headers: request.headers }
6566
);
6667

@@ -92,7 +93,7 @@ export default async function middleware( request: NextRequest )
9293
// Une fois récupérés, on déchiffre le contenu du fichier
9394
// avec son vecteur d'initialisation et on retourne le
9495
// résultat comme une réponse classique.
95-
return new NextResponse(
96+
const response = new NextResponse(
9697
await crypto.subtle.decrypt(
9798
{
9899
iv: buffer.subarray( 0, 16 ),
@@ -102,6 +103,12 @@ export default async function middleware( request: NextRequest )
102103
buffer.subarray( 16 )
103104
)
104105
);
106+
response.headers.set(
107+
"Content-Type",
108+
mime.getType( file.name ) ?? "application/octet-stream"
109+
);
110+
111+
return response;
105112
}
106113
catch
107114
{

0 commit comments

Comments
 (0)