geopython / geopython/pywps

Add support of CORS protocol

Open
#644 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
186
Forks
117
Avg merge
11d 20h
Merged PRs (30d)
1

Description

# Description

The CORS protocol [1] is needed to support request from web browser from cross-origin fetch, i.e. fetch from different domain name. As instance a javascript from domain1.com that want to fetch a WPS from domain2.com. The protocol need to answer to some HTTP OPTIONS requests.

In my case I override the wsgi application when OPTIONS request is perfomed to allow any cross-origin request as follow:

```
from werkzeug.wrappers import Request, Response
from pywps.app.Service import Service

_servive = Service(processes, ['PWD/pywps.cfg'])

@Request.application
def application(http_request):
# Allow request from any sources to avoid cross-origin issue.
if http_request.method == 'OPTIONS':
return Response(headers={
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "origin, content-type, x-requested-with",
"Access-Control-Allow-Methods": "PUT, GET, POST, DELETE, OPTIONS"
})

# Default case
r = _servive.call(http_request)
return r
```

[1] https://fetch.spec.whatwg.org/#cors-protocol

# Environment

- operating system:
Any

- Python version:
Any

- PyWPS version:
Any

- source/distribution
- [x] git clone
- [x] Debian
- [x] PyPI
- [x] zip/tar.gz
- [x] other (please specify):
Any

- web server
- [x] Apache/mod_wsgi
- [x] CGI
- [x] other (please specify):
Any

# Steps to Reproduce

# Additional Information

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.