场景介绍:

在Django开发过程中,使用前后端分离设计的站点越来越多,如Django+VUE、Django+Angular。在使用DjangoRestFramework开发API的过程中,由于前端站点和后端API站点域名往往不同,随之而来的便是跨域问题。
跨域攻击是一种常见的Web攻击手段,常见的攻击流程为: 假设现在你有一个前端站点A和后端站点B,前端站点A使用Ajax的GET请求后端站点B的接口/withdraw/?money=1000&account=yinkh可以向账号yinkh提现一千元,整个过程使用token认证或者session认证,用户的身份信息会被缓存在用户的浏览器中。现在假设有不法分子架设了一个站点C,在站点C中放入一张图片其src路径设置为/withdraw/?money=1000&account=xxxx,不法分子再将站点C的链接通过一定的方式诱导你在缓存有后端站点B的浏览器中访问,如果后端站点B没有做跨域访问控制的话,你就将像不法分子的账户xxxx提现一千元。
而跨域访问控制是通过验证请求来源站点,以防止跨域攻击。只有你将前端站点A对应的域名添加至后端站点B的可信列表中,你才能正确的请求对应的API接口,否则请求将被后端站点B拒绝。

配置:

$ pip install django-cors-headers

  

settings.py

INSTALLED_APPS = [
...
'corsheaders',
...
]
# 设置middleware
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
] # 重点,设置信任站点
if DEBUG:
CORS_ORIGIN_ALLOW_ALL = True
else:
CORS_ORIGIN_WHITELIST = (
'www.example.com',
)

  生产环境下需要使用CORS_ORIGIN_WHITELIST,将你信任的前端站点域名加入CORS_ORIGIN_WHITELIST列表中,该域名不要以http://或者https://开头

django restframework 跨域访问的更多相关文章

  1. 解决Django本地接口不能跨域访问的问题

    1.安装django-cors-headers模块: pip install django-cors-headers 2.插入Django的APP配置中: # 修改settings.py中的INSTA ...

  2. django处理跨域

    django处理Ajax跨域访问时使用javascript进行ajax访问的时候,出现如下错误 出错原因:javascript处于安全考虑,不允许跨域访问.下图是对跨域访问的解释: 概念: 这里说的j ...

  3. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  4. Angular2中对ASP.NET MVC跨域访问

    应用场景 项目开发决定使用angular2进行前后端分离开发,由我负责后端服务的开发,起初选择的是web api进行开发.对跨域访问通过API中间件+过滤器对跨域访问进行支持.开发一段后,通知需要移植 ...

  5. cookie 跨域访问的解决方案

    Cookie 同域单点登录  最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录.    ...

  6. System.Web.Http.Cors配置跨域访问的两种方式

    System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...

  7. flash跨域访问,crossdomain.xml,error #2048

    最近遇到了flash的万年老梗,跨域访问的问题.之前一直没有处理过这类问题,是因为做项目的时候别人已经处理好了.真到自己遇到的时候,还是很费脑筋的. 1遇到的问题 客户端发布到网页的时候,socket ...

  8. Ajax跨域访问wcf服务中所遇到的问题总结。

    工具说明:vs2012,sql server 2008R2 1.首先,通过vs2012建立一个wcf服务项目,建立好之后.再新开一个vs2012 建立web项目,通过jQuery的ajax方法访问服务 ...

  9. Jsonp跨域访问

    很早之前看过好几篇跨域访问的文章,然后做项目的时候基本没有遇到跨域访问的问题.不过该来的还是会来,前些天终于让我遇到了.于是重温了一下原理这些,再进行实战.于是现在也敢通过实战后的一些理解来和大家分享 ...

随机推荐

  1. MAC终端常用语法

    这篇文章的重点不在于说是对终端语法的讲解,而是方便大家做语法备忘. 方便查找对应终端语法.所以使用了表格形式对常用终端语法进行了汇总, 但是并没有很多的讲解部分. 当然了这里记录的也都是十分基础的语法 ...

  2. iOS----------Xcode9无线调试教程

    软硬件要求: - Xcode 9.0 beat 及以上版本 - macOS 10.12.5 及以上版本 - iOS 11.0 beat 及以上版本 网络连接要求 - 电脑和设备处于同一 Wifi 环境 ...

  3. 测者的性能测试手册:JVM的监控利器

    测者的性能测试手册:JVM的监控利器 每次聊起性能测试,最后的终结话题就是怎么做优化.其实在Java的复杂项目中都会有内存不足问题.内存泄露问题.线程死锁问题.CPU问题.这些问题工程测试或者是小压力 ...

  4. Spring MVC 数据绑定 (四)

    完整的项目案例: springmvc.zip 目录 实例 项目结构路径: 一.配置web.xml <?xml version="1.0" encoding="UTF ...

  5. Python Learning: 01

    After a short period of  new year days, I found life a little boring. So just do something funny--Py ...

  6. Django组件--forms组件(注册用)

    一.forms组件--校验类的使用 二.form组件--校验类的参数 三.forms组件校验的局部钩子--自定义校验规则(要看源码理解) 四.forms组件校验的全局钩子--校验form表单两次密码输 ...

  7. 关于Docker开通远程访问端口2375

    一.使用版本:docker for windows 18.06,安装过程略,具体如下: 二.开通远程访问端口2375,只需要设置一下即可,如下图:

  8. 在windows下远程访问linux桌面

    一.安装xrdp工具: #  yum install xrdp #   yum install tigervnc-server #   service xrdp start 以上三个命令执行完毕安装完 ...

  9. Spring Security(三十):9.5 Access-Control (Authorization) in Spring Security

    The main interface responsible for making access-control decisions in Spring Security is the AccessD ...

  10. AI pytorch

    pytorch 参考链接: https://pytorch.org