diff --git a/README.md b/README.md
index b3763d9..d29dc1a 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,7 @@ def init_graphql(app, loop):
 -   `jinja_env`: Sets jinja environment to be used to process GraphiQL template. If Jinja’s async mode is enabled (by `enable_async=True`), uses 
 `Template.render_async` instead of `Template.render`. If environment is not set, fallbacks to simple regex-based renderer.
 -   `batch`: Set the GraphQL view as batch (for using in [Apollo-Client] or [ReactRelayNetworkLayer])
+-   `cors`: If `True`, set basic CORS headers in response to CORS preflight requests, otherwise - don't set any CORS headers (It's recommended to use [Sanic-CORS] extension).
 
 You can also subclass `GraphQLView` and overwrite `get_root_value(self, request)` to have a dynamic root value per request.
 
@@ -73,4 +74,5 @@ This project is licensed under MIT License.
   [ReactRelayNetworkLayer]: https://github.com/nodkz/react-relay-network-layer
   [Sergey Porivaev]: https://github.com/grazor
   [sanic-graphql]: https://github.com/grazor/sanic-graphql
+  [sanic-cors]: https://github.com/ashleysommer/sanic-cors
 
diff --git a/sanic_graphql/graphqlview.py b/sanic_graphql/graphqlview.py
index 4177890..599ccf7 100644
--- a/sanic_graphql/graphqlview.py
+++ b/sanic_graphql/graphqlview.py
@@ -27,6 +27,7 @@ class GraphQLView(HTTPMethodView):
     middleware = None
     batch = False
     jinja_env = None
+    cors = False
     max_age = 86400
 
     _enable_async = True
@@ -168,15 +169,22 @@ def process_preflight(self, request):
         https://www.w3.org/TR/cors/#resource-preflight-requests """
         origin = request.headers.get('Origin', '')
         method = request.headers.get('Access-Control-Request-Method', '').upper()
+        headers = request.headers.get('Access-Control-Request-Headers', '')
 
         if method and method in self.methods:
-            return HTTPResponse(
-                status=200,
+            if self.cors:
                 headers={
                     'Access-Control-Allow-Origin': origin,
                     'Access-Control-Allow-Methods': ', '.join(self.methods),
-                    'Access-Control-Max-Age': str(self.max_age),
+                    'Access-Control-Allow-Headers': headers,
+                    'Access-Control-Allow-Age': str(self.max_age),
                 }
+            else:
+                headers = {}
+
+            return HTTPResponse(
+                status=200,
+                headers=headers,
             )
         else:
             return HTTPResponse(