python如何快速解决CORS问题

在Python中快速解决CORS(跨源资源共享)问题,通常有几种常用的方法。以下是一些常见的解决方案:
1. 使用 Flask-CORS

如果你使用的是 Flask,可以使用 Flask-CORS 插件。安装方法如下:

bash

pip install flask-cors

然后在你的 Flask 应用中引入并使用:

python

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # 允许所有域名访问

# 你可以选择性地设置特定的域名
# CORS(app, resources={r"/api/*": {"origins": "http://example.com"}})

@app.route('/api/data')
def data():
    return {"message": "Hello, World!"}

if __name__ == '__main__':
    app.run()

2. 在 Django 中配置 CORS

对于 Django,你可以使用 django-cors-headers 插件。安装方法如下:

bash

pip install django-cors-headers

然后在 settings.py 中进行配置:

python

INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
]

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    ...
]

# 允许所有域名
CORS_ALLOW_ALL_ORIGINS = True

# 或者指定特定域名
# CORS_ALLOWED_ORIGINS = [
#     "http://example.com",
#     "http://sub.example.com",
# ]

3. 手动设置响应头

如果你不想使用外部库,也可以手动设置响应头。以下是一个简单的示例:

python

from flask import Flask, jsonify, make_response

app = Flask(__name__)

@app.route('/api/data')
def data():
    response = make_response(jsonify({"message": "Hello, World!"}))
    response.headers['Access-Control-Allow-Origin'] = '*'
    return response

if __name__ == '__main__':
    app.run()

4. Nginx 反向代理

如果你在使用 Nginx 作为反向代理,可以在 Nginx 配置中添加 CORS 头:

nginx

location /api/ {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Content-Type';
    
    # 处理 OPTIONS 请求
    if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'Content-Type';
        return 204;
    }
}

选择合适的方法来解决你的 CORS 问题,根据你的具体需求和应用架构进行配置。

请使用浏览器的分享功能分享到微信等