summaryrefslogtreecommitdiff
path: root/src/index.js
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-12 21:05:31 -0800
committerFuwn <[email protected]>2024-01-12 21:05:31 -0800
commit58ad07431ab64d0454ac954b15fd95f4a547375a (patch)
treece98d31f666af791d9461183bc1a03880a5e88ad /src/index.js
parentstyle: restyle (diff)
downloaddue-proxy-58ad07431ab64d0454ac954b15fd95f4a547375a.tar.xz
due-proxy-58ad07431ab64d0454ac954b15fd95f4a547375a.zip
feat: return errors on bad request
Diffstat (limited to 'src/index.js')
-rw-r--r--src/index.js76
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',
+ });
}
});