diff options
| author | Fuwn <[email protected]> | 2024-01-12 21:05:31 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-12 21:05:31 -0800 |
| commit | 58ad07431ab64d0454ac954b15fd95f4a547375a (patch) | |
| tree | ce98d31f666af791d9461183bc1a03880a5e88ad /src | |
| parent | style: restyle (diff) | |
| download | due-proxy-58ad07431ab64d0454ac954b15fd95f4a547375a.tar.xz due-proxy-58ad07431ab64d0454ac954b15fd95f4a547375a.zip | |
feat: return errors on bad request
Diffstat (limited to 'src')
| -rw-r--r-- | src/index.js | 76 |
1 files changed, 46 insertions, 30 deletions
diff --git a/src/index.js b/src/index.js index b7b929c..df6f83a 100644 --- a/src/index.js +++ b/src/index.js @@ -1,24 +1,32 @@ const handleRequest = async (request) => { - const url = new URL(request.url); - const query = url.search.split('?q=')[1]; + try { + const url = new URL(request.url); + const query = url.search.split('?q=')[1]; - request = new Request(query, request); + request = new Request(query, request); - request.headers.set('Host', new URL(query).origin); - request.headers.set('Referer', new URL(query)); - request.headers.set('Origin', new URL(query)); - request.headers.set('Access-Control-Allow-Credentials', 'true'); - request.headers.delete('X-Content-Type-Options'); + request.headers.set('Host', new URL(query).origin); + request.headers.set('Referer', new URL(query)); + request.headers.set('Origin', new URL(query)); + request.headers.set('Access-Control-Allow-Credentials', 'true'); + request.headers.delete('X-Content-Type-Options'); - let response = await fetch(request); + let response = await fetch(request); - response = new Response(response.body, response); + response = new Response(response.body, response); - response.headers.set('Access-Control-Allow-Origin', 'https://due.moe'); - response.headers.append('Vary', 'Origin'); - response.headers.set('Cache-Control', 'max-age=300'); + response.headers.set('Access-Control-Allow-Origin', 'https://due.moe'); + response.headers.append('Vary', 'Origin'); + response.headers.set('Cache-Control', 'max-age=300'); - return response; + return response; + } catch { + return new Response(null, { + status: 400, + + statusText: 'bad request', + }); + } }; const handleOptions = async (request) => { @@ -46,28 +54,36 @@ const handleOptions = async (request) => { addEventListener('fetch', (event) => { const request = event.request; - switch (request.method) { - case 'OPTIONS': - event.respondWith(handleOptions(request)); + try { + switch (request.method) { + case 'OPTIONS': + event.respondWith(handleOptions(request)); - break; + break; - case 'GET': - case 'HEAD': - case 'POST': - event.respondWith(handleRequest(request)); + case 'GET': + case 'HEAD': + case 'POST': + event.respondWith(handleRequest(request)); - break; + break; - default: - event.respondWith(async () => { - return new Response(null, { - status: 405, + default: + event.respondWith(async () => { + return new Response(null, { + status: 405, - statusText: 'method not allowed', + statusText: 'method not allowed', + }); }); - }); - break; + break; + } + } catch { + return new Response(null, { + status: 400, + + statusText: 'bad request', + }); } }); |