|
|
@@ -0,0 +1,38 @@
|
|
|
+export default {
|
|
|
+ async fetch(request, env) {
|
|
|
+ const url = new URL(request.url);
|
|
|
+
|
|
|
+ // API 代理
|
|
|
+ if (url.pathname.startsWith('/admin-api')) {
|
|
|
+ const targetUrl = `https://apidev.ifoodme.com${url.pathname}${url.search}`;
|
|
|
+
|
|
|
+ const headers = new Headers(request.headers);
|
|
|
+ headers.delete('host');
|
|
|
+
|
|
|
+ const response = await fetch(targetUrl, {
|
|
|
+ method: request.method,
|
|
|
+ headers: headers,
|
|
|
+ body: request.method !== 'GET' && request.method !== 'HEAD' ? request.body : undefined,
|
|
|
+ redirect: 'follow',
|
|
|
+ });
|
|
|
+
|
|
|
+ const responseHeaders = new Headers(response.headers);
|
|
|
+ responseHeaders.set('Access-Control-Allow-Origin', '*');
|
|
|
+ responseHeaders.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
|
|
+ responseHeaders.set('Access-Control-Allow-Headers', 'Content-Type, Authorization, tenant-id');
|
|
|
+
|
|
|
+ if (request.method === 'OPTIONS') {
|
|
|
+ return new Response(null, { status: 204, headers: responseHeaders });
|
|
|
+ }
|
|
|
+
|
|
|
+ return new Response(response.body, {
|
|
|
+ status: response.status,
|
|
|
+ statusText: response.statusText,
|
|
|
+ headers: responseHeaders,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 静态资源请求 - 使用 env.ASSETS
|
|
|
+ return env.ASSETS.fetch(request);
|
|
|
+ },
|
|
|
+};
|