_worker.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. export default {
  2. async fetch(request, env) {
  3. const url = new URL(request.url);
  4. // API 代理
  5. if (url.pathname.startsWith('/admin-api')) {
  6. const targetUrl = `https://apidev.ifoodme.com${url.pathname}${url.search}`;
  7. const headers = new Headers(request.headers);
  8. headers.delete('host');
  9. const response = await fetch(targetUrl, {
  10. method: request.method,
  11. headers: headers,
  12. body: request.method !== 'GET' && request.method !== 'HEAD' ? request.body : undefined,
  13. redirect: 'follow',
  14. });
  15. const responseHeaders = new Headers(response.headers);
  16. responseHeaders.set('Access-Control-Allow-Origin', '*');
  17. responseHeaders.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  18. responseHeaders.set('Access-Control-Allow-Headers', 'Content-Type, Authorization, tenant-id');
  19. if (request.method === 'OPTIONS') {
  20. return new Response(null, { status: 204, headers: responseHeaders });
  21. }
  22. return new Response(response.body, {
  23. status: response.status,
  24. statusText: response.statusText,
  25. headers: responseHeaders,
  26. });
  27. }
  28. // 静态资源请求 - 使用 env.ASSETS
  29. return env.ASSETS.fetch(request);
  30. },
  31. };