mirror of
https://github.com/ZSCGR/CloudFlare-ImgBed.git
synced 2026-08-13 04:03:42 +08:00
fix: filter upstream file request headers
This commit is contained in:
@@ -97,14 +97,37 @@ export function handleHeadRequest(headers, etag = null) {
|
||||
});
|
||||
}
|
||||
|
||||
const UPSTREAM_FILE_REQUEST_HEADERS = [
|
||||
'Range',
|
||||
'If-Range',
|
||||
'If-Match',
|
||||
'If-None-Match',
|
||||
'If-Modified-Since',
|
||||
'If-Unmodified-Since',
|
||||
];
|
||||
|
||||
function buildUpstreamFileRequestHeaders(requestHeaders) {
|
||||
const headers = new Headers();
|
||||
|
||||
for (const headerName of UPSTREAM_FILE_REQUEST_HEADERS) {
|
||||
const value = requestHeaders.get(headerName);
|
||||
if (value !== null) {
|
||||
headers.set(headerName, value);
|
||||
}
|
||||
}
|
||||
|
||||
return headers;
|
||||
}
|
||||
|
||||
export async function getFileContent(request, targetUrl, max_retries = 2) {
|
||||
const method = request.method === 'HEAD' ? 'HEAD' : 'GET';
|
||||
const headers = buildUpstreamFileRequestHeaders(request.headers);
|
||||
let retries = 0;
|
||||
while (retries <= max_retries) {
|
||||
try {
|
||||
const response = await fetch(targetUrl, {
|
||||
method: request.method,
|
||||
headers: request.headers,
|
||||
body: request.body,
|
||||
method,
|
||||
headers,
|
||||
});
|
||||
if (response.ok || response.status === 304) {
|
||||
return response;
|
||||
|
||||
Reference in New Issue
Block a user