Skip to content

Commit 0684312

Browse files
authored
fix(assets): Forward headers from the original request to the internal request to the image (#10775)
1 parent 01cb417 commit 0684312

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

.changeset/rich-spoons-fold.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"astro": patch
3+
---
4+
5+
Fixes assets endpoint in serverless returning 404 in certain situations where the website might be under a protected route

packages/astro/src/assets/endpoint/generic.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ import { isRemoteAllowed } from '../utils/remotePattern.js';
77
// @ts-expect-error
88
import { imageConfig } from 'astro:assets';
99

10-
async function loadRemoteImage(src: URL) {
10+
async function loadRemoteImage(src: URL, headers: Headers) {
1111
try {
12-
const res = await fetch(src);
12+
const res = await fetch(src, {
13+
// Forward all headers from the original request
14+
headers,
15+
});
1316

1417
if (!res.ok) {
1518
return undefined;
@@ -41,15 +44,16 @@ export const GET: APIRoute = async ({ request }) => {
4144

4245
let inputBuffer: ArrayBuffer | undefined = undefined;
4346

44-
const sourceUrl = isRemotePath(transform.src)
47+
const isRemoteImage = isRemotePath(transform.src);
48+
const sourceUrl = isRemoteImage
4549
? new URL(transform.src)
4650
: new URL(transform.src, url.origin);
4751

48-
if (isRemotePath(transform.src) && isRemoteAllowed(transform.src, imageConfig) === false) {
52+
if (isRemoteImage && isRemoteAllowed(transform.src, imageConfig) === false) {
4953
return new Response('Forbidden', { status: 403 });
5054
}
5155

52-
inputBuffer = await loadRemoteImage(sourceUrl);
56+
inputBuffer = await loadRemoteImage(sourceUrl, isRemoteImage ? new Headers() : request.headers);
5357

5458
if (!inputBuffer) {
5559
return new Response('Not Found', { status: 404 });

0 commit comments

Comments
 (0)