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 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
:"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
-
Install new add-ons and restart Volto:
yarn yarn start
-
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.