什么是跨域问题呢:

  1. 1. 跨域问题:
  2. CORS 跨域资源共享: 有简单请求 和非简单请求
  3.  
  4. 简单请求:
  5. 只要符合如下两条,就是简单请求,否则则是非简单请求
  6. (1)
  7. 请求方法是以下三种方法之一:
  8. HEAD
  9. GET
  10. POST
  11. (2)
  12. HTTP的头信息不超出以下几种字段:
  13. Accept
  14. Accept - Language
  15. Content - Language
  16. Last - Event - ID
  17. Content - Type:只限于三个值application / x - www - form - urlencodedmultipart / form - datatext / plain
  18.  
  19. 简单请求只发一次请求
  20. 非见到你请求发两次:一次是OPTIONS预检请求,预检请求同意我发,我再发起第二次真实请求,一次是真实的请求
  21.  
  22. 处理跨域问题(可以使用django-cors-headers 模块)

2. 如何处理?

  1. 可以自己处理: 创建一个文件:
  2. 第一步:
  3. class MyMiddleware(MiddlewareMixin):
  4. def process_response(self, request, response):
  5. # 处理了简单请求
  6. response['Access-Control-Allow-Origin'] = '*'
  7. # 处理非简单请求
  8. if request.method == 'OPTIONS':
  9. response['Access-Control-Allow-Headers'] = '*'
  10. # response['Access-Control-Allow-Methods']='PUT,PATCH'
  11. response['Access-Control-Allow-Methods'] = '*'
  12.  
  13. return response

3. 如何使用?

  1. 第二步: setting文件内
  2. MIDDLEWARE = [
  3. 'django.middleware.cache.UpdateCacheMiddleware',
  4. #处理跨域的中间件
  5. 'app01.mycsrf.MyMiddleware', #添加第一步写好的中间件配置信息
  6.  
  7. #总结 jason 数据就是非简单请求 put,delete 也是非简单请求

缓存问题

1. 缓存到文件的方法:

  1. CACHES = {
  2. 'default': {
  3. 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 指定缓存使用的引擎
  4. 'LOCATION': 'D:\lqz\cache', # 指定缓存的路径
  5. 'TIMEOUT': 300, # 缓存超时时间(默认为300秒,None表示永不过期)
  6. 'OPTIONS': {
  7. 'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
  8. 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
  9. }
  10. }
  11. }

在settings中配置

2. 使用缓存:

  1. -第二步:使用缓存
  2. -使用单页面缓存(使用装饰器):
  3. from django.views.decorators.cache import cache_page
  4. @cache_page(5)
  5. def cache_test(request):
  6. print('走视图函数')
  7. ctime=time.time()
  8. return render(request,'index.html',locals())

3. 局部缓存在前端页面的处理:

  1. -页面局部缓存
  2. {% load cache %}
  3. #传两个参数:第一个参数是超时时间,第二个参数是key值,唯一的标志#
  4. {% cache 5 'ttt'%}
  5. 当前时间是:{{ ctime }}
  6. {% endcache %}

前端html的处理

4.全站缓存的配置中间件:

  1. MIDDLEWARE = [
  2. 'django.middleware.cache.UpdateCacheMiddleware',
  3. #处理跨域的中间件
  4. 'app01.mycsrf.MyMiddleware',
  5.  
  6. 'django.middleware.security.SecurityMiddleware',
  7. 'django.contrib.sessions.middleware.SessionMiddleware',
  8. 'django.middleware.common.CommonMiddleware',
  9. # 'django.middleware.csrf.CsrfViewMiddleware',
  10. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  11. 'django.contrib.messages.middleware.MessageMiddleware',
  12. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  13.  
  14. 'django.middleware.cache.FetchFromCacheMiddleware'
  15. ]
  16.  
  17. CACHE_MIDDLEWARE_SECONDS=5 #定义缓存的时间

在settings下配置如下

drf框架之跨域问题的解决与缓存问题的更多相关文章

  1. 解决使用elementUI框架el-upload跨域上传时session丢失问题

    解决方法一: 1.使用elementUI框架el-upload跨域上传时,后端获取不到cookie,后端接口显示未登录,在添加了 with-credentials="true"后依 ...

  2. Django框架 之 跨域请求伪造

    Django框架 之 跨域请求伪造 浏览目录 同源策略与Jsonp 同源策略 Jsonp jQuery对JSONP的实现 CORS 简介 两种请求 同源策略与Jsonp 同源策略 同源策略(Same ...

  3. vue+django分离开发的思想和跨域问题的解决

    一.介绍 在前后端分离的开发过程中,会涉及到跨域的问题,比如本次个人使用的Django+vue的框架,在vue对Django进行响应,Django再将响应的数据返回给vue,vue在进行渲染,如果不设 ...

  4. Vue 项目中遇到的跨域问题及解决方法

    原文:https://www.jb51.net/article/137278.htm 问题描述 前端 vue 框架,跨域问题后台加这段代码 header("Access-Control-Al ...

  5. SSM框架处理跨域问题

    什么是跨域 跨域是指从一个域名的网页去请求另一个域名的资源.比如从www.baidu.com 页面去请求 www.google.com 的资源.跨域的严格一点的定义是:只要 协议,域名,端口有任何一个 ...

  6. jquery ajax跨域的完美解决方法(jsonp方式)

    ajax跨域请求的问题,JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式,接下来为大家详细介绍下客户端JQuery.ajax的调用代码     今天在项目中需要做远程数据加载 ...

  7. 如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题

    在开发环境与后端调试的时候难免会遇到跨域问题,很多人说跨域交给后端解决就好了. 其实不然,前端也有很多方法可以解决跨域,方便也快捷. 常见的有nginx转发.node代理. 在vue项目中常用的是pr ...

  8. AJAX跨域问题以及解决思路(更新中)

    跨域的三大原因(同时满足) 浏览器限制 跨域 XHR请求 解决思路: 让浏览器不做限制,指定参数,让浏览器不做校验,但该方法不太合理,它需要每个人都去做改动. 不要发出XHR请求,这样就算是跨域,浏览 ...

  9. WebApi2跨域问题及解决办法

    跨域问题产生的原因 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能.现在所有支持JavaScript的浏览器都会使用这个策略.所谓同源是指,域名,协议, ...

随机推荐

  1. TCP建立与断开连接、socket通讯模板

    在传输层,有一个重点是TCP传输时建立连接的三次"握手"和四次"挥手",因为socket工作于应用层和传输层之间,故而涉及到建立连接和关闭连接的过程,以下笔记可 ...

  2. [R] [Johns Hopkins] R Programming -- week 4

    #Generating normal distribution (Pseudo) random number x<-rnorm(10) x x2<-rnorm(10,2,1) x2 set ...

  3. Visual Studio Code create the aps.net core project(Visual Studio Code 创建asp.net core项目)

    Install the C# plug-in as shown below: Perfom the dotnet new --help command as shown below: Enter a ...

  4. 台式机安装Linux操作系统无法识别网卡

    在公司一台台式机上安装centos7系统,发现安装好之后,发现没有自动生成eth0网卡. 查看网卡相关信息: lspci|grep Eth 获取到网卡型号后,可以去官网下载对应的安装包进行编译安装即可 ...

  5. Java高级特性 第14节 解析XML文档(2) - SAX 技术

    一.SAX解析XML文档 SAX的全称是Simple APIs for XML,也即XML简单应用程序接口.与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式.当使用S ...

  6. webpack-dev-server --inline --progress --config build/webpack.dev.conf.js

    vue 项目 npm run dev 运行时报错: npm ERR! xxx@1.0.0 dev: `webpack-dev-server --inline --progress --config b ...

  7. 黄聪:如何正确在Vue框架里使用Swiper

    实例: 错误(无法显示出分页器按钮,此功能不适用与for循环出来的图片,只有当该页面图片固定几张时能正常用) 第一步: 安装  npm i swiper (vue插件自带) 第二步: 在当前页面里引入 ...

  8. kettle使用小结----脚本启动

    初学kettle,使用kettle Spoon完成转换(ktr)或作业(kjb)的编写之后,执行作业可以在spoon中直接启动,因为我的需求是持续监控数据表的状态进行数据同步, 所以作业任务需要一直在 ...

  9. storm中的一些概念

    1.topology 一个topolgy是spouts和bolts组成的图,通过stream groupings将图中的spout和bolts连接起来:如图所示: 一个topology会一直运行知道你 ...

  10. 小程序中添加客服按钮contact-button

    小程序的客服系统,是微信做的非常成功的一个功能,开发者可以很方便的通过一行代码,就可实现客服功能. 1. 普通客服按钮添加 <button open-type='contact' session ...