Skip to content

eea/volto-corsproxy

Repository files navigation

volto-corsproxy

Releases

Pipeline Lines of Code Coverage Bugs Duplicated Lines (%)

Pipeline Lines of Code Coverage Bugs Duplicated Lines (%)

Volto add-on

Features

This package enables fetching data from third-party servers through the Volto HTTP server, this way bypassing any CORS security restrictions imposed by the browser.

The way it does this is by providing a pass-through CORS proxy server on the path (configurable) /cors-proxy path. For example, any requests made to the URL http://localhost:3000/cors-proxy/http://example.com/ will be piped to the http://example.com website, through the Volto node server.

As you wouldn't want to provide an open proxy, all proxied destinations need to be configured either via settings.allowed_cors_destinations (which takes a list of hostnames) or an environment variable called RAZZLE_ALLOWED_CORS_DESTINATIONS (where you need to provide a comma-separated list of hostnames).

For example:

settings.allowed_cors_destinations = ['eea.europa.eu', 'plone.org']

or:

RAZZLE_ALLOWED_CORS_DESTINATIONS=eea.europa.eu,plone.org yarn start

As a convenience feature for dealing with third-party API endpoints, there's a new action available, getProxiedExternalContent, somewhat similar to Volto's getContent. Call it like: getProxiedExternalContent(thirdpartyurl) and it will make that async content available in the Redux content reducer, at store.content.subrequests[thirdpartyurl].

Getting started

Try volto-corsproxy with Docker

  git clone https://github.com/eea/volto-corsproxy.git
  cd volto-corsproxy
  make
  make start

Go to http://localhost:3000

Add volto-corsproxy to your Volto project

  1. Make sure you have a Plone backend up-and-running at http://localhost:8080/Plone

    docker compose up backend
  2. Start Volto frontend

  • If you already have a volto project, just update package.json:

    "addons": [
        "@eeacms/volto-corsproxy"
    ],
    
    "dependencies": {
        "@eeacms/volto-corsproxy": "*"
    }
  • If not, create one:

    npm install -g yo @plone/generator-volto
    yo @plone/volto my-volto-project --canary --addon @eeacms/volto-corsproxy
    cd my-volto-project
    
  1. Install new add-ons and restart Volto:

    yarn
    yarn start
    
  2. Go to http://localhost:3000

  3. Happy editing!

Release

See RELEASE.md.

How to contribute

See DEVELOP.md.

Copyright and license

The Initial Owner of the Original Code is European Environment Agency (EEA). All Rights Reserved.

See LICENSE.md for details.

Funding

European Environment Agency (EU)