https://github.com/LordotU/corsyusha
Simple and fast proxy to bypass CORS issues during prototyping against existing APIs without having to worry about CORS
https://github.com/LordotU/corsyusha
access-control-allow-origin cors cors-proxy cors-proxy-server fastify nodejs proxy
Last synced: about 1 year ago
JSON representation
Simple and fast proxy to bypass CORS issues during prototyping against existing APIs without having to worry about CORS
- Host: GitHub
- URL: https://github.com/LordotU/corsyusha
- Owner: LordotU
- License: mit
- Created: 2019-04-04T17:28:36.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-08-03T20:12:31.000Z (almost 5 years ago)
- Last Synced: 2024-02-29T06:37:53.517Z (over 2 years ago)
- Topics: access-control-allow-origin, cors, cors-proxy, cors-proxy-server, fastify, nodejs, proxy
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/corsyusha
- Size: 1.93 MB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starz - LordotU/corsyusha - Simple and fast proxy to bypass CORS issues during prototyping against existing APIs without having to worry about CORS (JavaScript)
README
# Corsyusha — Local CORS Proxy
[](https://opensource.org/licenses/MIT)
[](https://travis-ci.org/LordotU/corsyusha)
[](https://coveralls.io/github/LordotU/corsyusha)
## Description
Simple and fast (built on top of [fastify](https://www.npmjs.com/package/fastify) proxy to bypass [CORS](https://developer.mozilla.org/ru/docs/Web/HTTP/CORS) issues during prototyping against existing APIs without having to worry about CORS
This module was built to solve the issue of getting errors like this:
```text
... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
```
## Installation
```bash
npm install -g corsyusha
# or
yarn global add corsyusha
```
## Testing
```bash
yarn test:jest # Runs Jest with coverage collection
yarn test:coverage # Sends coverage to .coveralls.io
yarn test # yarn test:jest && yarn test:coverage
```
## Usage
Let's imagine API endpoint that we want to request that has CORS issues:
```text
https://licenseapi.herokuapp.com/licenses/mit
```
Start Proxy:
```bash
corsyusha --url https://licenseapi.herokuapp.com
```
Or:
```bash
CORSYUSHA_URL=https://licenseapi.herokuapp.com corsyusha
```
Or you may pull Docker image and run a container:
```bash
docker pull lordotu/corsyusha
docker run -dti \
-e CORSYUSHA_URL=https://licenseapi.herokuapp.com \
-e CORSYUSHA_HOST=0.0.0.0 \
-p 8118:8118 \
--name corsyusha \
lordotu/corsyusha
```
Then in your client code, new API endpoint:
```text
http://localhost:8118/proxy/licenses/mit
```
End result will be a request to `https://licenseapi.herokuapp.com/licenses/mit` without the CORS issues!
Alternatively you can install the package locally:
```bash
npm install corsyusha
# or
yarn add corsyusha
```
And add a script to your project:
```json
"scripts": {
"proxy": "corsyusha --url https://licenseapi.herokuapp.com"
}
```
Or:
```json
"scripts": {
"proxy": "CORSYUSHA_URL=https://licenseapi.herokuapp.com corsyusha"
}
```
## Configuring
You may set params via command line args or via env variables. All defaults are stored in `.env` file in the root directory.
Only one argument is **required**: `--url` (or `CORSYUSHA_URL` if you prefer env variables).
### Options
| Option | Shorthand | Example | Default |
|-----------------|-----------|-----------------------------------|----------:|
| --url | -u | https://licenseapi.herokuapp.com | |
| --port | -p | 8119 | 8118 |
| --host | -h | 0.0.0.0 | localhost |
| --urlSection | -s | trhough | proxy |
| --serverLogging | -l | true | false |
| --headers | | {"X-Requested-With": "Corsyusha"} | {} |
| --headers | | {"X-Requested-With": "Corsyusha"} | {} |
| --origin | -o | http://127.0.0.1 | * |
| --reflectOrigin | -r | true | false |
### Environment variables
| Option | Example | Default |
|--------------------------|-----------------------------------|----------:|
| CORSYUSHA_URL | https://licenseapi.herokuapp.com | |
| CORSYUSHA_PORT | 8119 | 8118 |
| CORSYUSHA_HOST | 0.0.0.0 | localhost |
| CORSYUSHA_URL_SECTION | trhough | proxy |
| CORSYUSHA_SERVER_LOGGING | true | false |
| CORSYUSHA_HEADERS | {"X-Requested-With": "Corsyusha"} | {} |
| CORSYUSHA_ORIGIN | http://127.0.0.1 | * |
| CORSYUSHA_REFLECT_ORIGIN | true | false |