CORS-解决Django中跨域问题

当在Django中进行前后端分离开发时,前端服务器与后端服务器是独立的,也就是不在同一个域名下。这时由浏览器的同源策略,默认不允许不同域间互访数据。为了使前后端服务器能相互访问,可以使用CORS来解决。

安装及配置

1. 安装

pip install django-cors-headers

2. 配置

  • 注册:
INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)
  • 添加中间件:
    将其放在MIDDLEWARE配置第一位
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

3. 白名单设置
CORS_ORIGIN_WHITELIST为授权进行跨站点HTTP请求的来源列表,默认为[]。
需要URI协议+主机名+端口指定。
不指明端口时,将使用默认端口(HTTPS = 443,HTTP = 80)。

# CORS
CORS_ORIGIN_WHITELIST = (
    'https://example.com' ,
    'https://sub.example.com' ,
    'http:// localhost:8080' ,
    'http://127.0.0.1:9000'
)
CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

4. cookies允许
CORS_ALLOW_CREDENTIALS如果为True,则允许cookie包含在跨站点HTTP请求中。
默认为False。

 CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

5. 允许的请求方法
不指定CORS_ALLOW_METHODS时默认允许以下方法跨域请求:

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

其他一些设置参考官方文档:https://pypi.org/project/django-cors-headers/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.浏览器的同源安全策略 浏览器只允许请求当前域的资源,而对其他域的资源表示不信任。 那怎么才算跨域呢? 请求协议...
    赵客缦胡缨v吴钩霜雪明阅读 2,054评论 1 10
  • 题目1.什么是同源策略? 同源策略(Same origin Policy): 浏览器出于安全方面的考虑,只允许与本...
    FLYSASA阅读 1,752评论 0 6
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    Yaoxue9阅读 1,325评论 0 6
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    他方l阅读 1,077评论 0 2
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    HeroXin阅读 856评论 0 4