什么是跨域问题呢:

  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. cdcq的独立博客

    cdcq的独立博客终于又复活啦,以后就用这个了 地址: http://cdcq.coding.me 现在用的是luogu的博客:https://cdcq.blog.luogu.org/

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

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

  3. http options 请求

  4. 【备份】如何在 PADS Layout 中选择 Gerber 274X 格式

    如何在 PADS Layout 中选择 Gerber 274X 格式. 起初原因是 JLC 说 274X 和 274D 的差别. 有小伙伴使用了 274D 的格式,结果做出来的 PCB 有问题.

  5. [转]CPU-bound(计算密集型) 和I/O bound(I/O密集型)

    转自:http://blog.csdn.net/q_l_s/article/details/51538039 I/O密集型 (CPU-bound) I/O bound 指的是系统的CPU效能相对硬盘/ ...

  6. 工控随笔_06_西门子_Step7归档项目无法备份的解决方法

    在一次备份Step7项目时,突然发现无法进行备份而是报错,具体的报错内容如下所示: 图 step7 归档程序时报pkzipc.exe 应用程序错误  内存不能为"read" 一.s ...

  7. configEnvironment()源码探究

    该方法目的是对上面刚创建的环境对象进行相关配置,包含两步:配置属性源和配置活跃profiles. 其中配置属性源如下: 1.首先获取属性源 2.然后将默认属性源添加到属性源中 3.然后将命令行属性源添 ...

  8. [蓝桥杯]PREV-27.历届试题_蚂蚁感冒

    问题描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂 ...

  9. ES - Index Templates 全局index模板

    1.Index Templates 之前我们聊过Dynamic template,它作用范围是特定的Index,如果我们想针对全局Index进行设置该如何操作呢? Index Templates 可以 ...

  10. 如何重置Gitlab root用户密码

    一.切换到root用户 sudo su 二.进入gitlab控制台 gitlab-rails console production 三.查找用户对象 user = User.).first 四.重置密 ...