Skip to content
A CORS proxy in a container (Docker) for when you need to `Access-Control-Allow-Origin: *`!
JavaScript HTML Dockerfile
Branch: master
Clone or download
Latest commit d4b0276 Jun 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Build fixing Jun 14, 2019
test Build fixing Jun 14, 2019
.gitignore
.travis.yml
Dockerfile Build fixing Jun 14, 2019
LICENSE
README.md Update README.md Jun 14, 2019
app.js Build fixing Jun 14, 2019
bootstrap.js Build fixing Jun 14, 2019
index.html
package-lock.json Build fixing Jun 14, 2019
package.json Build fixing Jun 14, 2019

README.md

cors-container

A CORS proxy in a container (Docker) for when you need to Access-Control-Allow-Origin: *!

Build Status

You can use CORS Container without running it yourself via Heroku (it's on a free tier dyno, so initial startup time may be slow!) https://cors-container.herokuapp.com.

About

If you need permissive CORS for a front-end project, simply deploy this container and proxy your HTTP requests through it.

Once the container is running, you may navigate to http://container-address:3000/https://jacobclark.xyz, cors-container will then proxy the specified resource and transform the original headers to be CORS permissive, whilst keeping origional headers in-tact.

If you intend to use this in production over the open web, ensure the service is locked down with restrictive firewall/access permissions, otherwise any content may be proxied over your server.

I suggest implementing proper CORS headers on your resources and using this for development purposes only.

Relative URL rewriting

cors-container can rewrite relative URLs to full URLs of the response body you have proxied.

For example if we wish to proxy http://blog.jacobclark.xyz/ and cors-container is runinnng on http://localhost:3000/ the request URL would be http://localhost:3000/http://blog.jacobclark.xyz/.

cors-container will rewrite any relative URLs it finds in the proxies response body. For example <a href="/css/style.css"> would be modified to <a href="http://localhost:3000/http://blog.jacobclark.xyz/css/style.css"> in the proxied response.

This can be useful if you wish to be able to pull additional assets on a page through the proxy such as stylesheets and JavaScript.

This is not enabled by default as this option mutates the original response body.

Set rewrite-urls in the request header to cors-cotainer if you want relative URLs rewriting.

Deploying

Docker(hub)

$ docker pull imjacobclark/cors-container
$ docker run --restart=always -d -p 3000:3000 --name cors-container imjacobclark/cors-container

Docker(source)

$ git pull https://github.com/imjacobclark/cors-container.git && cd cors-container
$ docker build -t cors-container .
$ docker run --restart=always -d -p 3000:3000 --name cors-container cors-container

Node

$ git pull https://github.com/imjacobclark/cors-container.git && cd cors-container
$ npm run test && npm start

Thanks to

You can’t perform that action at this time.