From 660a81d1d774f2ea6fe2e94c0a2b9cbbc55c10e0 Mon Sep 17 00:00:00 2001 From: x-dr Date: Wed, 7 Feb 2024 22:17:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B7=A8=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- functions/create.js | 48 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/functions/create.js b/functions/create.js index 1418f62..b9b2c01 100644 --- a/functions/create.js +++ b/functions/create.js @@ -35,20 +35,31 @@ export async function onRequestPost(context) { const timedata = new Date(); const formattedDate = new Intl.DateTimeFormat('zh-CN', options).format(timedata); const { url, slug } = await request.json(); - + const corsHeaders = { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': 'Content-Type', + 'Access-Control-Max-Age': '86400', // 24 hours + }; if (!url) return Response.json({ message: 'Missing required parameter: url.' }); // url格式检查 if (!/^https?:\/\/.{3,}/.test(url)) { - return Response.json({ message: 'Illegal format: url.' }) + return Response.json({ message: 'Illegal format: url.' },{ + headers: corsHeaders, + status: 400 + }) } // 自定义slug长度检查 2 10 || /.+\.[a-zA-Z]+$/.test(slug))) { - return Response.json({ message: 'Illegal length: slug, (>= 2 && <= 10), or not ending with a file extension.' }); + return Response.json({ message: 'Illegal length: slug, (>= 2 && <= 10), or not ending with a file extension.' },{ + headers: corsHeaders, + status: 400 + + }); } - - + + try { @@ -59,12 +70,18 @@ export async function onRequestPost(context) { // url & slug 是一样的。 if (existUrl && existUrl.existUrl === url) { - return Response.json({ slug, link: `${origin}/${slug2}` }) + return Response.json({ slug, link: `${origin}/${slug2}` },{ + headers: corsHeaders, + status: 200 + }) } // slug 已存在 if (existUrl) { - return Response.json({ message: 'Slug already exists.' }) + return Response.json({ message: 'Slug already exists.' },{ + headers: corsHeaders, + status: 200 + }) } } @@ -73,12 +90,17 @@ export async function onRequestPost(context) { // url 存在且没有自定义 slug if (existSlug && !slug) { - return Response.json({ slug: existSlug.existSlug, link: `${origin}/${existSlug.existSlug}` }) + return Response.json({ slug: existSlug.existSlug, link: `${origin}/${existSlug.existSlug}` },{ + headers: corsHeaders, + status: 200 + + }) } const bodyUrl = new URL(url); if (bodyUrl.hostname === originurl.hostname) { return Response.json({ message: 'You cannot shorten a link to the same domain.' }, { + headers: corsHeaders, status: 400 }) } @@ -90,10 +112,16 @@ export async function onRequestPost(context) { const info = await env.DB.prepare(`INSERT INTO links (url, slug, ip, status, ua, create_time) VALUES ('${url}', '${slug2}', '${clientIP}',1, '${userAgent}', '${formattedDate}')`).run() - return Response.json({ slug: slug2, link: `${origin}/${slug2}` }) + return Response.json({ slug: slug2, link: `${origin}/${slug2}` },{ + headers: corsHeaders, + status: 200 + }) } catch (e) { // console.log(e); - return Response.json({ message: e.message }) + return Response.json({ message: e.message },{ + headers: corsHeaders, + status: 500 + }) }