Django REST framework (DRF) 是一个强大且灵活的工具,用于构建 Web API。要实现跨域资源共享(CORS),DRF 提供了一种简单的方式来处理跨域请求。以下是一些步骤和示例,展示如何在 DRF 中启用 CORS。
1. 安装 CORS 支持
首先,确保已经安装了 django-cors-headers
包,这是一个流行的 Django 应用,用于处理 CORS 问题。
pip install django-cors-headers
2. 配置 Django 设置
在你的 Django 项目的 settings.py
文件中,添加 corsheaders
到 INSTALLED_APPS
列表,并配置中间件。
INSTALLED_APPS = [
# ...
'corsheaders',
# ...
]
MIDDLEWARE = [
# ...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
# ...
]
3. 允许跨域请求
在 settings.py
中,你可以设置 CORS_ORIGIN_WHITELIST
或 CORS_ORIGIN_ALLOW_ALL
来控制哪些源可以访问你的 API。
- 白名单模式 (`CORS_ORIGIN_WHITELIST`): 只允许指定的域名访问你的 API。
CORS_ORIGIN_WHITELIST = [
'http://example.com',
'http://another-domain.com',
]
- 允许所有 (`CORS_ORIGIN_ALLOW_ALL`): 允许所有域名访问你的 API。请注意,出于安全考虑,在生产环境中通常不推荐这样做。
CORS_ORIGIN_ALLOW_ALL = True
4. 配置 CORS 行为
你还可以通过 CORS_ALLOW_METHODS
和 CORS_ALLOW_HEADERS
来指定允许的 HTTP 方法和请求头。
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]
注意事项
- 在开发过程中,可以使用 CORS_ORIGIN_ALLOW_ALL = True
来简化开发,但请记得在部署到生产环境时切换到更安全的设置。
- 如果你的 API 需要处理 cookies 或 HTTP 认证信息,确保设置 CORS_ALLOW_CREDENTIALS = True
。