Based on: https://github.com/obeone/simple-cors-proxy
This is a simple CORS proxy server. It allows you to make cross-origin requests to any API without worrying about CORS restrictions.
- 🌐 Seamless integration with external APIs
- 🔒 Secure authentication using an API key
- 🔗 Ability to proxy requests to any URL using the
X-Url-Destinationheader or directly in the URL path - 🔄 Handles CORS headers to enable cross-origin requests
✈️ Automatic preflight OPTIONS request handling (responds with 200 without proxying)- 🔐 Supports credentials with
Access-Control-Allow-Credentials: true - ⚙️ Easy setup and configuration
- 🐳 Docker image available for quick deployment
You can use the Docker image to quickly run the proxy server. Here's how:
- Pull the Docker image:
docker pull mathiasvda/simple-cors-proxy- Run the Docker container:
docker run -d --name simple-cors-proxy -p 8080:8080 mathiasvda/simple-cors-proxyYou can use the Docker Compose file to quickly run the proxy server. Here's how:
- Run the Docker Compose file:
docker compose up -dTo use this proxy server without Docker, follow these steps:
- Clone the repository:
git clone https://github.com/matdata-eu/simple-cors-proxy.git- Install the dependencies:
npm install- Start the server:
npm start- The server will be running on port 8080 by default. You can change the port by setting the
PORTenvironment variable.
To use the proxy server, you need to send a request with the X-Url-Destination header set to the URL of the resource you want to access.
Example:
curl -H "X-Url-Destination: http://example.com" http://localhost:8080/proxyYou can now pass the entire URL directly after /proxy/ in your request. This method preserves any query parameters that might be present in the URL.
Example:
curl http://localhost:8080/proxy/https://example.com/some/path?foo=1By using this approach, the server automatically sets the X-Url-Destination header to the full decoded URL, making it easier and more intuitive to use the proxy.
If you need to authenticate access to the proxy server, you can use the PROXY_TOKEN environment variable. You set the PROXY_TOKEN environment variable to the value of your API key, and the proxy server will check the API key in the X-Proxy-Token header.
Example :
docker run -d --name simple-cors-proxy -p 8080:8080 -e PROXY_TOKEN=YOUR_API_KEY mathiasvda/simple-cors-proxycurl -H "X-Proxy-Token: YOUR_API_KEY" -H "X-Url-Destination: http://example.com" http://localhost:8080/proxyIf you need to remove some headers (for example X-Forwarded-For), you can use the x-headers-delete header. For example, if you want to remove the X-Forwarded-For header, you can set the x-headers-delete header to X-Forwarded-For.
You can also use the environment variable HEADERS_TO_DELETE to remove specific headers, or both.
In both cases, if you need to remove multiple headers, you can use a comma-separated list.
So for example :
docker run -d --name simple-cors-proxy -p 8080:8080 -e HEADERS_TO_DELETE=X-Forwarded-For,X-Forwarded-Host mathiasvda/simple-cors-proxyThe proxy server automatically handles preflight OPTIONS requests for all routes. When an OPTIONS request is received, the server responds with a 200 status code and the appropriate CORS headers without proxying the request to the destination server. This includes:
Access-Control-Allow-Origin: The origin from the request or*Access-Control-Allow-Methods:GET,POST,PUT,PATCH,DELETE,OPTIONSAccess-Control-Allow-Headers:X-Requested-With,Content-Type,Accept,Origin,Last-Modified,AuthorizationAccess-Control-Allow-Credentials:trueAccess-Control-Max-Age:86400(24 hours)
This ensures smooth cross-origin requests from browsers without unnecessary round-trips to the destination server.
Contributions are welcome! If you encounter any issues or have suggestions for improvements, please open an issue or submit a pull request on GitHub.
Generated by GPT-3.5-turbo-1106