Volto add-on
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].
git clone https://github.com/eea/volto-corsproxy.git
cd volto-corsproxy
make
make start
Go to http://localhost:3000
make start now defaults to Volto 18. To run the same setup against Volto 17, use:
VOLTO_VERSION=17 make
VOLTO_VERSION=17 make start
-
Make sure you have a Plone backend up-and-running at http://localhost:8080/Plone
docker compose up backend
-
Start Volto frontend
-
If you already have a volto project, just update
package.json:"dependencies": { "@eeacms/volto-corsproxy": "*" }
and
volto.config.js:const addons = ['@eeacms/volto-corsproxy'];
-
If not, create one with Cookieplone, as recommended by the official Plone documentation for Volto 18+:
uvx cookieplone project cd project-title
-
Install or update dependencies, then start the project:
make installFor a Cookieplone project, start the backend and frontend in separate terminals:
make backend-start make frontend-startFor a legacy Volto 17 project, install the package with
yarnand restart the frontend as usual. -
Go to http://localhost:3000
-
Happy editing!
See RELEASE.md.
See DEVELOP.md.
The Initial Owner of the Original Code is European Environment Agency (EEA). All Rights Reserved.
See LICENSE.md for details.