Docker + Django跨域解决方案

什么是Django

在这里插入图片描述

Django 是一个开源的高级 Python Web 框架,它鼓励快速开发并遵循可重用和可维护的实践。Django 是在 MTV(模型-模板-视图)模式的基础上设计的,这个模式类似于但不同于 MVC(模型-视图-控制器)模式。Django 由 Adrian Holovaty 和 Simon Willison 在 2005 年创建,并以他们的新闻网站框架为基础开发而成。

什么是 django-cors-headers

django-cors-headers 是一个 Django 应用程序,它简化了跨源资源共享(CORS)的配置。CORS 是一种机制,它使用额外的 HTTP 头来告诉浏览器允许哪些类型的跨源请求。启用 CORS 可以使得一个域上的 Web 应用向另一个域上的服务器发出请求。

安装

这里主要是采用 django-cors-headers 来实现,进入Docker终端,执行pip安装命令:

pip install django-cors-headers

在这里插入图片描述
待安装完成后,进入项目根目录并打开settings.py文件
添加 ‘corsheaders’ 到 INSTALLED_APPS 并配置中间件:

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

然后添加 django-cors-headers 插件到 MIDDLEWARE 数组中:

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

最后再添加 CORS 配置项:

CORS_ORIGIN_ALLOW_ALL = True  # 允许所有域名进行跨域请求
CORS_ALLOW_CREDENTIALS = True  # 允许跨域访问Cookie

您也可以设置 CORS_ALLOWED_ORIGINS 来限制允许跨域请求的特定域名

django-cors-headers 可配置项

CORS_ORIGIN_ALLOW_ALL:

如果设置为 True,则允许所有来源进行跨域请求,不使用白名单。
默认值为 False。

CORS_ORIGIN_WHITELIST:

一个包含允许进行跨站点 HTTP 请求的域名的列表。
默认为空列表,即不添加任何来源到白名单。

CORS_ORIGIN_REGEX_WHITELIST:

一个正则表达式列表,用于匹配允许进行跨站点 HTTP 请求的域名。
默认为空列表。

CORS_URLS_REGEX:

一个正则表达式,用于指定哪些 URL 应该应用 CORS 策略。
默认为 r’^..$',即匹配所有 URL。

CORS_ORIGIN_ALLOW_ALL:

如果设置为 True,则允许所有来源进行跨域请求。

CORS_ALLOW_METHODS:

一个包含允许的 HTTP 方法的列表。
默认为 (‘GET’,)。

CORS_ALLOW_HEADERS:

一个包含允许的 HTTP 请求头的列表。
默认为 (‘accept’, ‘accept-encoding’, ‘authorization’, ‘content-type’, ‘dnt’, ‘origin’, ‘user-agent’, ‘x-csrftoken’, ‘x-requested-with’)。

CORS_EXPOSE_HEADERS:

一个包含需要在响应中暴露给客户端的非标准 HTTP 头的列表。

CORS_PREFLIGHT_MAX_AGE:

预请求(OPTIONS 请求)的有效时间,单位为秒。
默认不设置,表示不缓存预请求结果。

CORS_ALLOW_CREDENTIALS:

如果设置为 True,则允许跨域请求携带凭证(如 cookies)。
默认为 False。

CORS_REPLACE_HTTPS_REFERER:

如果设置为 True,则在请求头 Referer 中使用 HTTPS 协议替换 HTTP 协议。

CORS_USE_CREDENTIALS:

如果设置为 True,则请求将使用凭证(如 cookies)。
默认为 False。

相关推荐

  1. 解决方案

    2024-05-11 08:30:03       14 阅读
  2. 问题解决方案

    2024-05-11 08:30:03       8 阅读
  3. 项目记录:问题解决方案

    2024-05-11 08:30:03       40 阅读
  4. 问题及解决方案

    2024-05-11 08:30:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 08:30:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 08:30:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 08:30:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 08:30:03       20 阅读

热门阅读

  1. HTTP/1.0、HTTP/1.1、HTTP/2.0区别

    2024-05-11 08:30:03       10 阅读
  2. AI学习指南概率论篇-概率分布

    2024-05-11 08:30:03       9 阅读
  3. 超级好用的C++实用库之动态库加载器

    2024-05-11 08:30:03       8 阅读
  4. axios常用配置

    2024-05-11 08:30:03       8 阅读
  5. npm详解

    2024-05-11 08:30:03       9 阅读
  6. 【服务治理中间件】consul介绍和基本原理

    2024-05-11 08:30:03       12 阅读
  7. Express中间件(完善)

    2024-05-11 08:30:03       10 阅读
  8. VUE----数字增加,兼容小程序

    2024-05-11 08:30:03       9 阅读