Spaces:
Paused
Paused
| addEventListener('fetch', event => { | |
| event.respondWith(handleRequest(event.request)) | |
| }) | |
| async function handleRequest(request) { | |
| const url = new URL(request.url) | |
| const targetUrl = `https://api2.cursor.sh${url.pathname}${url.search}` | |
| // 创建一个新的请求对象,复制原始请求的头部和方法,但使用新的目标URL | |
| // 注意:一些头部可能需要特殊处理,或者不应该直接复制 (例如 Host) | |
| const newHeaders = new Headers(request.headers) | |
| newHeaders.set('Host', 'api2.cursor.sh') // 设置正确的主机头 | |
| const newRequest = new Request(targetUrl, { | |
| method: request.method, | |
| headers: newHeaders, | |
| body: request.body, | |
| redirect: 'follow' // 根据需要处理重定向 | |
| }) | |
| try { | |
| const response = await fetch(newRequest) | |
| // 创建一个新的响应,以便可以修改头部 (例如,CORS) | |
| const newResponseHeaders = new Headers(response.headers) | |
| // 允许跨域请求 (根据需要调整) | |
| newResponseHeaders.set('Access-Control-Allow-Origin', '*') | |
| newResponseHeaders.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') | |
| newResponseHeaders.set('Access-Control-Allow-Headers', '*') | |
| return new Response(response.body, { | |
| status: response.status, | |
| statusText: response.statusText, | |
| headers: newResponseHeaders | |
| }) | |
| } catch (e) { | |
| return new Response(e.toString(), { status: 500 }) | |
| } | |
| } |