Skip to main content
Build Status
Latest Version
Downloads
Supported Python versions
License

A Flask extension for handling Cross Origin Resource Sharing (CORS), making cross-origin AJAX possible.

Installation

Install the extension with using pip, or easy_install.

$ pip install flask-cors

Usage

This extension enables CORS support either via a decorator, or a Flask extension. There are three examples shown in the examples directory, showing the major use cases. The suggested configuration is the simple_example.py, or the app_example.py.

Simple Usage

In the simplest case, initialize the Flask-Cors extension with default arguments in order to allow CORS on all routes.

app = Flask(__name__)
cors = CORS(app)

@app.route("/")
def helloWorld():
  return "Hello, cross-origin-world!"

Resource specific CORS

Alternatively, a list of resources and associated settings for CORS can be supplied, selectively enables CORS support on a set of paths on your app.

Note: this resources parameter can also be set in your application’s config.

app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})

@app.route("/api/v1/users")
def list_users():
  return "user example"

Route specific CORS via decorator

This extension also exposes a simple decorator to decorate flask routes with. Simply add @cross_origin() below a call to Flask’s @app.route(..) incanation to accept the default options and allow CORS on a given route.

@app.route("/")
@cross_origin() # allow all origins all methods.
def helloWorld():
  return "Hello, cross-origin-world!"

Using JSON with CORS

When using JSON cross origin, browsers will issue a pre-flight OPTIONS request for POST requests. In order for browsers to allow POST requests with a JSON content type, you must allow the Content-Type header. The simplest way to do this is to simply set the CORS_HEADERS configuration value on your application: e.g.

app.config['CORS_HEADERS'] = 'Content-Type'

Application-wide settings

Alternatively, you can set all parameters except automatic_options in an app’s config object. Setting these at the application level effectively changes the default value for your application, while still allowing you to override it on a per-resource basis, either via the CORS and regular expressions, or via the @cross_origin() decorator.

The application-wide configuration options are creatively prefixed with ‘CORS_’ e.g.

  • CORS_ORIGINS

  • CORS_METHODS

  • CORS_HEADERS

  • CORS_EXPOSE_HEADERS

  • CORS_ALWAYS_SEND

  • CORS_MAX_AGE

  • CORS_SEND_WILDCARD

  • CORS_ALWAYS_SEND

For a full list of options, please see the full documentation

Tests

A simple set of tests is included in test/. To run, install nose, and simply invoke nosetests or python setup.py test to exercise the tests.

Contributing

Questions, comments or improvements? Please create an issue on Github, tweet at @wcdolphin or send me an email.

Credits

This Flask extension is based upon the Decorator for the HTTP Access Control written by Armin Ronacher.

Metadata

Release files for flask-cors 1.7.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flask-cors 1.7.2
File Size Uploaded Provenance
Flask-Cors-1.7.2.tar.gz 13.8 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for flask-cors 1.7.2
File Interpreter ABI Platform
Flask_Cors-1.7.2-py3-none-any.whl Python 3 none any Details
Flask_Cors-1.7.2-py2-none-any.whl Python 2 none any Details

Total release size: 33.6 kB

Release files / Flask-Cors-1.7.2.tar.gz

Download URL Flask-Cors-1.7.2.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
7c581b2c350d943a5db621bdb051d2a668785821f58492ffd2f301655fcc8e11
BLAKE2b-256 checksum
How to use checksums
2a1d45cb02bcfd3b0749462a925d469ec41ee521aca476132d9f6bbafd9133a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / Flask_Cors-1.7.2-py3-none-any.whl

Download URL Flask_Cors-1.7.2-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
66a464ab4966099930ce01ecf5b7e96dad7671f13e2a980e28400757aa2fbd99
BLAKE2b-256 checksum
How to use checksums
5e04d5ec1d666589ed822aab1e13119648cf7420959d41bcb210bcfdf3dd43dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / Flask_Cors-1.7.2-py2-none-any.whl

Download URL Flask_Cors-1.7.2-py2-none-any.whl
Size 9.9 kB
Tags Python 2
SHA-256 checksum
How to use checksums
108654e24e720c5efe35fd67230286ae0069afe1e785d39dc12f759aeb938ad1
BLAKE2b-256 checksum
How to use checksums
680972a8d525d08b8f071379b63faac31aa799827404cae0ca81d38ba259ed80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for flask-cors 1.7.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.7.2 This release

3 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page