
Django
CORS Django访问控制允许来源
CORS(跨域资源共享)是一种机制,它允许Web应用程序在浏览器中访问不同域的资源。在Django框架中,我们可以使用CORS库来实现访问控制允许来源。本文将介绍如何在Django中配置CORS,并提供一个简单的案例代码来演示其使用。1. 安装CORS库在开始之前,我们需要先安装Django CORS库。在命令行中运行以下命令来安装它:Pythonpip install Django-cors-headers2. 配置CORS接下来,我们需要在Django项目的设置文件中配置CORS。打开项目的
settings.py文件,并添加以下代码:PythonINSTALLED_APPS = [ ... 'corsheaders', ...]MIDDLEWARE = [ ... 'corsheaders.middleware.CorsMiddleware', 'Django.middleware.common.CommonMiddleware', ...]CORS_ORIGIN_ALLOW_ALL = FalseCORS_ORIGIN_WHITELIST = [ 'http://example.com', 'https://example.com',]CORS_ALLOW_METHODS = [ 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS',]在上述代码中,我们首先将
corsheaders应用程序添加到INSTALLED_APPS中,然后将CorsMiddleware添加到MIDDLEWARE中。接下来,我们设置CORS_ORIGIN_ALLOW_ALL为False,表示只允许来自白名单中的域名访问。然后,我们设置CORS_ORIGIN_WHITELIST为一个包含允许访问的域名列表。最后,我们设置CORS_ALLOW_METHODS为允许的HTTP方法列表。3. 使用CORS配置完成后,我们可以在视图函数或视图类中使用CORS。在下面的示例中,我们将创建一个简单的API视图函数,并使用CORS来允许跨域访问。Pythonfrom Django.http import JSonResponsefrom Django.views.decorators.csrf import csrf_exemptfrom Django.views.decorators.http import require_POSTfrom corsheaders.decorators import cors_headers@csrf_exempt@require_POST@cors_headers(allow_headers='Content-Type')def api_view(request): data = { 'message': 'Hello, CORS!' } return JSonResponse(data)在上述代码中,我们使用@cors_headers装饰器将allow_headers参数设置为'Content-Type',以允许跨域请求中的Content-Type头部。我们还使用@csrf_exempt装饰器来禁用CSRF保护,并使用@require_POST装饰器来确保只允许POST请求访问该视图。4. 测试CORS配置和使用CORS后,我们可以使用不同域名的浏览器来测试跨域访问。假设我们的Django应用程序运行在http://localhost:8000,我们可以使用以下JavaScript代码在另一个域名上发送POST请求:Javascriptfetch('http://localhost:8000/api/', { method: 'POST', headers: { 'Content-Type': 'application/JSon' }, body: JSON.stringify({}),}).then(response => response.JSon()).then(data => console.log(data));上述代码将向http://localhost:8000/api/发送一个POST请求,并打印响应数据到控制台。通过配置和使用Django CORS库,我们可以轻松地实现跨域资源共享。使用CORS,我们可以控制允许访问我们应用程序的来源,以提高安全性并允许与其他域的资源进行交互。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号