📜  如何在 Django 项目中启用 CORS 标头?(1)

📅  最后修改于: 2023-12-03 15:24:09.673000             🧑  作者: Mango

如何在 Django 项目中启用 CORS 标头?

什么是CORS

跨域资源共享 (CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器,让运行在一个域上的 Web 应用访问来自另一个域的资源。

为什么要使用CORS

在现代的 Web 应用程序开发中,分离前端和后端是一个常见的做法,通常前端代码和后端 API 都是运行在不同的域上的。但是,由于浏览器的同源策略 (Same-Origin Policy),前端页面的 JavaScript 代码不能直接访问与其不同域的服务器上的资源,而CORS 可以解决这个问题,允许前端页面使用 JavaScript 访问另一个域上的资源。

如何在Django中启用CORS
安装django-cors-headers

django-cors-headers是Django的支持CORS的第三方包,可以通过在settings.py中修改安装的包来启用CORS。

安装命令如下:

pip install django-cors-headers
修改settings.py文件

在Django的项目中,需要将django-cors-headers添加到项目的INSTALLED_APPS中,如下所示:

INSTALLED_APPS = (
    # ...
    'corsheaders',
    # ...
)

然后需要将中间件添加到MIDDLEWARE中去,如下所示:

MIDDLEWARE = (
    # ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    # ...
)
配置CORS

修改settings.py文件,找到CORS相关配置项,并根据需求进行配置。

CORS_ORIGIN_ALLOW_ALL = True

如果希望允许所有的来源请求,可以将CORS_ORIGIN_ALLOW_ALL设置为True。

当然,如果希望只允许特定的来源允许访问,可以在配置文件中指定这些来源:

CORS_ORIGIN_WHITELIST = [
    'https://example.com',
    'https://www.example.com',
]
在API视图中使用

配置CORS后,便可以在API视图中使用CORS,允许跨域请求,如下所示:

from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse

from rest_framework.decorators import api_view

from corsheaders.decorators import cors_exempt

@api_view(['POST'])
@csrf_exempt
@cors_exempt
def api_view(request):
    # Your code here
    return JsonResponse({})

在视图中,通过@cors_exempt装饰器,允许允许的访问来源访问。

小结

以上是在Django项目中启用CORS的具体步骤,通过使用django-cors-headers包,我们可以轻松实现跨域资源共享功能,让前端和后端可以良好地协同工作。