ASGI middleware for CORS, especially for using strawberry-graphql
Project description
asgi-cors-strawberry
ASGI middleware to apply CORS header especially for Strawberry GraphQL
installation
pip install asgi-cors-strawberry
when to use
According to mdn MDN - CORS, cross-origin requests are preflighted using OPTIONS method. The response from preflight has Access-Control-Allow-Origin, Access-Control-Allow-Headers, etc.
Since Strawberry GraphQL Consumer is designed to handle only GET and POST methods, if you use general ASGI CORS middleware, you will get a 405 code as a response to preflight.
- Our middleware responds with Okay status in case of OPTIONS method
- Our middleware checks Access-Control-Allow-Origin from hosts, wildcards setting, All hosts are allowed by default!
- Our middleware adds Content-Type in Access-Control-Allow-Headers, because gql will be passed to the request
how to use
# in django asgi.py
from asgi_cors_strawberry import CorsMiddleware
...
application = ProtocolTypeRouter(
{
"http": URLRouter(
[
re_path(r"^graphql", GraphQLHTTPConsumer.as_asgi(schema=schema)),
re_path(r"^", get_asgi_application()),
]
),
"websocket": URLRouter([
re_path(r"^graphql", GraphQLWSConsumer.as_asgi(schema=schema))
])
}
)
application = CorsMiddleware(application)
The example above is an ASGI application using Strawberry-GraphQL[Channels]
CorsMiddleware parameters
- CorsMiddleware(application, allow_all=True, hosts=[ ], host_wildcards=[ ], headers=["content-type", "authorization"])
allow_all
True if all hosts are allowed
hosts
if allow_all is False, hosts is a list of allowed hosts
host_wildcards
you can use wildcards in hosts, like ["*.example.com"]
headers
you can add headers to Access-Control-Allow-Headers
default header is "content-type" because gql will be passed to the request
TODO
- testcase
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for asgi-cors-strawberry-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39e41b025b5c67061938d1eff537b9266f1d82ffd0bc36aa07393b253aa25e2e |
|
MD5 | 2d31260bbf07dfd4ea671926ee3d4398 |
|
BLAKE2b-256 | 148707c6d61302913243385b66331c20dc81eeaa8f3e79914f3343ea8ff11888 |