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 文件中,添加 corsheadersINSTALLED_APPS 列表,并配置中间件。

INSTALLED_APPS = [

    # ...

    'corsheaders',

    # ...

]

MIDDLEWARE = [

    # ...

    'corsheaders.middleware.CorsMiddleware',

    'django.middleware.common.CommonMiddleware',

    # ...

]

3. 允许跨域请求

settings.py 中,你可以设置 CORS_ORIGIN_WHITELISTCORS_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_METHODSCORS_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