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.