From: Ardis Lu Date: Thu, 27 May 2021 09:34:22 +0000 (-0700) Subject: Add CORS worker X-Git-Url: https://git.ardis.lu/?a=commitdiff_plain;h=a038243ab968ee91b78e7cfced9abb67caf06a01;p=cloudflare-workers Add CORS worker --- diff --git a/README.md b/README.md index c8bcc6b..e0f0635 100644 --- a/README.md +++ b/README.md @@ -83,3 +83,11 @@ This reverse proxy embeds Instagram posts so they can be viewed without logging ### Usage Same as `proxy`, but it will only work on instagram URLs in the format: `https://www.instagram.com/p/{POST_ID}/`. + +## cors + +This reverse proxy injects permissive CORS response headers to a response. Useful to use APIs that have not enabled CORS. + +### Usage + +Same as `proxy`. diff --git a/cors/index.js b/cors/index.js new file mode 100644 index 0000000..a358d1c --- /dev/null +++ b/cors/index.js @@ -0,0 +1,18 @@ +async function handleRequest(request) { + const url = new URL(request.url); + const queryString = decodeURIComponent(url.search.substring(1)); + + let response = await fetch(queryString); + response = new Response(response.body, response); + response.headers.set('Access-Control-Allow-Origin', '*'); + response.headers.set('Access-Control-Allow-Headers', '*'); + response.headers.set('Access-Control-Allow-Methods', '*'); + response.headers.set('Access-Control-Expose-Headers', '*'); + response.headers.set('Access-Control-Max-Age', '86400'); + + return response; +} + +addEventListener('fetch', event => { + event.respondWith(handleRequest(event.request)); +}) diff --git a/cors/package.json b/cors/package.json new file mode 100644 index 0000000..6809586 --- /dev/null +++ b/cors/package.json @@ -0,0 +1,22 @@ +{ + "name": "cors", + "version": "0.1.0", + "description": "This reverse proxy injects permissive CORS response headers to a response.", + "private": true, + "main": "index.js", + "scripts": { + "login": "wrangler login", + "preview": "wrangler preview", + "build": "wrangler build", + "publish": "wrangler publish" + }, + "author": "Ardis Lu", + "license": "ISC", + "devDependencies": { + "@cloudflare/wrangler": "^1.16.1" + }, + "repository": { + "type": "git", + "url": "https://github.com/ardislu/cloudflare-workers.git" + } +} diff --git a/package.json b/package.json index 989467e..1ed7537 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ }, "workspaces": [ "proxy", - "instagram" + "instagram", + "cors" ] }