drf版本控制 基于url的get传参方式 REST_FRAMEWORK={ # "DEFAULT_AUTHENTICATION_CLASSES":["app01.auth.AuthLogin",], # "DEFAULT_PERMISSION_CLASSES":['app01.auth.MyPer'], # "DEFAULT_THROTTLE_CLASSES":["app01.auth.VisitThrottle&…
初级 #models.py from django.db import models class User(models.Model): user = models.CharField(max_length=32) password = models.CharField(max_length=32) user_detail = models.OneToOneField(to='UserDetail', on_delete=models.SET_NULL, null=True, db_constr…
django允许跨域请求配置 下载corsheader pip install django-cors-headers 修改setting.py中配置 在INSTALLED_APPS中增加corsheaders INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.mess…
一. Django处理跨域 跨域的处理方式有很多,使用最多的就是CORS(跨域资源共享),接下来大致提一下django中处理跨域的配置. 首先安装django-cors-headers模块: pip install django-cors-headers 在settings.py中配置: ''' # 注册app INSTALLED_APPS = [ ... 'corsheaders' ] # 添加中间件 MIDDLEWARE = [ ... 'corsheaders.middleware.Cor…
Django cors跨域问题 前后端分离项目中的跨域问题 即同源策略 同源策略:同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略.如果缺少了同源策略,浏览器很容易受到 XSS. CSFR 等攻击. 同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源. 源就是协议.域名和端口号. 协…
复习 分页: 1. 简单分页 2. 偏移分页 3. 加密分页 解析器:客户处理前端提交来的数据 urlencode: body体中的数据格式: key=value& formdata编码:为区分文件和数据,有固定格式的分隔 json: {"name":"aaa"} -- 全局使用 from rest_framework import JSONParser,FormParser,MultiPartParser 版本控制 四种方式 -- 内置的四种类 1. 基于…
项目需求: 1.用域名8000向8001发送请求,用django框架解决跨域问题 2.用上自定义中间件配置,支持get.post.put.detele和非简单请求 3.支持版本控制 4.在setting中配置白名单列表,在表中域名可以访问,否则返回错误信息 # 首先8000端口url层设置路由 from django.conf.urls import url from django.contrib import admin from app import views urlpatterns =…
一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. Django中的几种缓存…
django缓存机制 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. django中的6中缓存方式 开发调试…
场景介绍: 在Django开发过程中,使用前后端分离设计的站点越来越多,如Django+VUE.Django+Angular.在使用DjangoRestFramework开发API的过程中,由于前端站点和后端API站点域名往往不同,随之而来的便是跨域问题.跨域攻击是一种常见的Web攻击手段,常见的攻击流程为: 假设现在你有一个前端站点A和后端站点B,前端站点A使用Ajax的GET请求后端站点B的接口/withdraw/?money=1000&account=yinkh可以向账号yinkh提现一千…
1,什么是CORS ​ 允许浏览器向跨源(协议 + 域名 + 端口)服务器发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制 2,特点 ​ 1,浏览器自动完成(在请求头中加入特殊头 或 发送特殊请求)​ 2,服务器需要支持(响应头中需要有特殊头) 3,简单请求(Simple requests)和预检请求(Preflighted requests) 满足以下全部条件的请求为简单请求 1,请求方法如下:​ GET or HEAD or POST 2,请求头仅包含如下:​ Ac…
django处理Ajax跨域访问时使用javascript进行ajax访问的时候,出现如下错误 出错原因:javascript处于安全考虑,不允许跨域访问.下图是对跨域访问的解释: 概念: 这里说的js跨域是指通过js或python在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(Django)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 跨域,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,…
XMLHttpRequest cannot load http://www.baidu.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://10.16.16.25:9988' is therefore not allowed access. tornado 这个就是典型的cors,允许后端允许跨域的方法.第二种方法,反向代理还在实践中 #!/usr/bi…
跨域请求可以用jsonp来解决,不过今天我发现一个很好用的包:django-cors-headers 只需要简单地配置一下就可 被请求方的setting.py中的配置如下: INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE_CLASSES = ( ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 注意顺序…
原理:浏览器的同源策略,其实我们的请求发送过去了,服务器也进行响应了,就是浏览器把响应给阻止响应而已 第一种方法jsonp 因为浏览器不对 <script> 标签里面的src属性进行阻止,而对 ajax 的请求进行阻止,所以jsonp的原理就是动态创建一个 <script> 然后进行销毁,有时候我们利用浏览器的检查查看网页代码的时候,看见网页代码动一下就是这么回事. 第二种方法 修改response响应头[建议在中间件中操作--高大上!哈哈] 这个是利用HTTP的协议的响应头来处理…
解决方案 1.安装django-cors-headers pip3 install django-cors-headers 2.配置settings.py文件 INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE_CLASSES = ( ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 注意顺序 ... )…
script ->jsonp跨域 浏览器的同源策略:不能跨越网站请求信息: XMLHttpRequests遵循这个规定. 因此ajax等基于XML的都不能进行跨站请求 而我们知道img,iframe,script等拥有src属性的可以进行跨站请求, 而利用这些标签进行的跨站方式成为jsonp 以script为例: function submitJsonp2() { var tag = document.createElement('script'); tag.src = 'http://127.…
一 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现 请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同. 比如:我在本地上的域名是127.0.0.1:8000,请求另外一个域名:127.0.0.1:8001一段数据 浏览器上就会报错,个就是同源策略的保护,如果浏览器对javasc…
一.前端本地缓存的几种实现方式了解一下 缓存的几种实现方式 序号 名称 参考资料 1 serviceWorker  https://blog.csdn.net/ztguang/article/details/53750479https://zhuanlan.zhihu.com/p/27264234 2 manifest https://developer.mozilla.org/zh-CN/docs/Web/Manifest 3 webSQL http://www.runoob.com/html…
一:跨域问题 1.同源策略(浏览器的安全策略) 只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了 2.cors:只要服务器实现了CORS,就可以实现跨域资源共享 (1)简单请求 只发一次请求 (2)非简单请求: 发两次请求:一次预检(OPTION请求),只有服务端允许发请求,才能继续发第二次正常请求,一次真正的请求 3.服务端如何处理: (1)写在中间件中: from django.utils.deprecation import Midd…
方案一:一套干掉全部Primary 首先你的pip下载一个第三方库贼厉害的: pip install corsheaders 然后在项目的setting.py里面引入第三方库,如下: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django…
1.跨域原理 #1. 首先浏览器安全策略限制js ajax跨域访问服务器 #2. 如果服务器返回的头部信息中有当前域: // 允许 http://localhost:8080 这个网站打开的页面中的js访问我 Access-Control-Allow-Origin: http://localhost:8080 // 允许携带cookie访问我 Access-Control-Allow-Credentials: true 2.django cors设置: 1. 安装包 pip install dj…
1.创建一个测试项目 1.1 创建项目和APP django-admin startproject BookManage # 创建项目 python manage.py startapp books # 创建APP '''2.在settings中注册books模型''' INSTALLED_APPS = [ 'books.apps.BooksConfig' ] # 注:pycharm无法联想,需要把apps文件夹设置为源根 '''3.urls.py中添加路由''' urlpatterns = […
1.创建一个测试项目   1.1 创建项目和APP   '''1.创建项目和APP''' django-admin startproject BookManage # 创建项目 python manage.py startapp books # 创建APP   '''2.在settings中注册books模型''' INSTALLED_APPS = [ 'books.apps.BooksConfig' ] # 注:pycharm无法联想,需要把apps文件夹设置为源根   '''3.urls.p…
1.跨越原理 1. 首先浏览器安全策略限制js ajax跨域访问服务器 2. 如果服务器返回的头部信息中有当前域: // 允许 http://localhost:8080 这个网站打开的页面中的js访问我 Access-Control-Allow-Origin: http://localhost:8080 // 允许携带cookie访问我 Access-Control-Allow-Credentials: true 那么, 浏览器可以让js 请求该服务器 2.django cors设置: 1.…
一.原理 同源?同源策略? 同源的定义是:两个页面的协议.端口和域名都相同 同源的例子: 不同源的例子: 同源策略SOP(Same origin policy)是一种浏览器约定,它是浏览器最核心也最基本的安全功能,为了防止浏览器受到XSS.CSFR的攻击,浏览器采用了同源策略,用于限制一个源加载的文档或脚本与另一个源的交互. 在我们的项目中,前端的vue和后端的django分别使用不同的端口,因此受到同源策略的限制,在没有跨域配置的初期,无法进行正常通信. 跨域?什么域? 跨域顾名思义就是一个网…
同源策略 首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 而如果我们要跳过这个策略,也就是说非要跨域请求,那么就需要通过JSONP或者CORS来实现了. JSONP 什么是JSONP 首先提一下JSON这个概念,JSON是一种轻量级的数据传输格式,被广泛应用于当前Web应用中.JSON格式数据的编码和解析基本在所有主流语言中都被实现,所以现在大部分前后端分离的架构都以JSON格式进行数据的传输. 那么JSONP是什么呢…
#跨域上传方法 def frontupload(request): if request.method == 'POST': item = {} file = request.FILES.get('imgFile') #定义跳转网址,就是前端伪造好的页面 callBackPath = 'http://localhost:8080/redirect.html' f = open(os.path.join(UPLOAD_ROOT,'',file.name),'wb') item['message']…
对于前后端分离的项目,在开发阶段经常会遇到跨域的问题. 1.首先,对于后台的处理方式,第一种是用 @CrossOrigin 注解,@crossorigin是后端SpringMVC框架(需4.2版本以上)Controller层的一个注解,这个注解是用在控制器方法上的,但这种方式不能做到统一跨域处理 @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(method = RequestMethod.GET) List…
同源策略: 首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 而如果我们要跳过这个策略,也就是说非要跨域请求,那么就需要通过JSONP或者CORS来实现了. 一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: URL 结果 原因 http://a.xyz.com/dir2/oth…