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) {
|
export async function getFileContent(request, targetUrl, max_retries = 2) {
|
||||||
|
const method = request.method === 'HEAD' ? 'HEAD' : 'GET';
|
||||||
|
const headers = buildUpstreamFileRequestHeaders(request.headers);
|
||||||
let retries = 0;
|
let retries = 0;
|
||||||
while (retries <= max_retries) {
|
while (retries <= max_retries) {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(targetUrl, {
|
const response = await fetch(targetUrl, {
|
||||||
method: request.method,
|
method,
|
||||||
headers: request.headers,
|
headers,
|
||||||
body: request.body,
|
|
||||||
});
|
});
|
||||||
if (response.ok || response.status === 304) {
|
if (response.ok || response.status === 304) {
|
||||||
return response;
|
return response;
|
||||||
|
|||||||
Reference in New Issue
Block a user