一、介绍

在前后端分离的开发过程中,会涉及到跨域的问题,比如本次个人使用的Django+vue的框架,在vue对Django进行响应,Django再将响应的数据返回给vue,vue在进行渲染,如果不设置跨域,数据就不能双向绑定,会出现错误。

二、前后端响应的基本原理

在vue中给定一个method(get/method/...)去响应后端的地址,后端在给一个反馈。交互的重点就是vue响应后端的设定好的url,比如我在Django中设置了一个url:

这个是project中的url

这个是APP中的url

两个连在一起就是url。

而我在vue中也需要这样去请求,才可以将前后端连接起来。

三、跨域

通过前面连接的基本介绍,就可以知道我在vue中的地址是http://localhost:8080/,而我在Django中的配置是http://localhost:8000/,两个不同域就会出现错误。解决的办法

在vue/config的ProxyTable中设置解决域冲突的问题

1、在config/index.js的文件下面修改参数

代码如下:

除了代理的target需要更改以外,其他的不需要更改,我尝试了下,可能是初学的原因,感觉这个api是写死了的,换了其他的好像有问题

    proxyTable: {
'/api': {
target: 'http://127.0.0.1:8000/',//设置你调用的接口域名和端口号 别忘了加http
changeOrigin: true,
// secure: false, // 如果是https接口,需要配置这个参数
pathRewrite: {
'^/api': '/'//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
}
}
},

 2、ajax的请求

1.安装

在项目下面安装axios

使用指令

npm install axios

2.使用

2.1在main.js中导入

import axios from 'axios'

Vue.prototype.$http = axios

2.2在.vue函数中的调用
使用created()方法对后端进行响应

响应地址前面带上api+自己设定的路由,就可以完成跨域的json访问。

四、结果

Django中的代码

从django.http中导入JsonResponse

界面展示

五、总结

跨域问题的解决很重要,尤其是前后端分离的情况下。主要的问题是跨域的配置,按照我这样的配置,在按照给出的请求方式就可以成功,在后面的学习中会不断的完善,最后的结果也会放到github。

六、参考

这个人blog前端的请求书写给我提供了解决的方案:

https://www.cnblogs.com/now-future/articles/9887504.html

这是一些写的好的

https://segmentfault.com/a/1190000011007043

https://juejin.im/post/5d89c75651882509662c55b1

vue+django分离开发的思想和跨域问题的解决的更多相关文章

  1. 开发环境Vue访问后端接口教程(前后端分离开发,端口不同下跨域访问)

    原理:开发环境下的跨域:在node.js上实现请求转发,vue前端通过axios请求到node.js上,node.js将请求转发到后端,反之.响应也是,先到node.js上,然后转发vue-cil项目 ...

  2. 前后端分离跨域 关于前后端分离开发环境下的跨域访问问题(angular proxy=>nginx )

    前后端分离后遇到了跨域访问的问题: angular1中使用proxy很麻烦,最后还是失败结束:最后总结3种方法如下: 本人使用的第一种方法,只是开发环境下使用很方便! 1:禁掉谷歌的安全策略(Turn ...

  3. springMVC前后端分离开发模式下支持跨域请求

    1.web.xml中添加cors规则支持(请修改包名) <filter> <filter-name>cors</filter-name> <filter-cl ...

  4. vue学习过程总结(07) - vue的后台服务API封装及跨域问题的解决

    以登录流程为例说明接口的封装. 1.登录调用后台的登录api 登录界面的代码 <template> <div class="login-page"> < ...

  5. WebApp开发:ajax请求跨域问题的解决

    服务端:PHP 客户端:Andorid, HTML5, jQuery, ajax 现象:本想通过jQuery的ajax功能从服务器取回数据存到手机的缓存里,结果总是错误,后来想到可能是跨域问题,所以查 ...

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

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

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

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

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

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

  9. JQuery的Ajax跨域请求的解决方式

            今天在项目中须要做远程数据载入并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究 ...

随机推荐

  1. 转 googlenet论文解读

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014061630/article/det ...

  2. jxl解析excel时,处理中文乱码问题

    jxl解析excel时,处理中文乱码问题 一般出现较多的问题是,当exce中包含了中文或特殊字符时,在解析时候就会出现乱码现象. 解决方法为: InputStream in = new FileInp ...

  3. .net 数据源DataSet 转换成模型

    /// <summary> /// DataSet转换成model 自动赋值返回集合 /// </summary> /// <typeparam name="T ...

  4. 由 ToString()和Convert.ToString() 引发的问题

    对于久经沙场的程序猿来说,类型转换再熟悉不过了,在代码中我们也会经常用到. 前几天,有个学生问我关于类型转换ToString()和Convert.ToString()的区别,这么常用的东西我竟然支支吾 ...

  5. CAD打印图纸要怎么操作?简单方法分享给你

    大家日常生活中多多少少的都接触到过CAD文件,CAD图是借助CAD制图软件来进行绘制完成的.唯一的困惑就是CAD图纸的格式大多数均为dwg格式的,查看起来不是那么的方便?所以很多设计师们都会选择将图纸 ...

  6. 高强度学习训练第八天总结:MySQL的一些优化

    为什么要做MYSQL优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库中的数据会越来越多,处理时间会相应变慢. 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计 ...

  7. 2-1-动态方法:ByTagName()

    动态方法:ByTagName() <ul id="list"> <li></li> <li></li> <li&g ...

  8. 用redis和cookie做单用户登录

    因为公司的项目需要用到单用户登录,于是今天用redis和cookie给系统添加了单用户登录功能,再次简单记录一下. 单用户登录是为了防止同一账户在不同电脑和不同浏览器里面同时登录.所以我这边的思路是: ...

  9. C和C++中的struct的不同

    C和C++中的struct的不同: (1)定义变量:  C语言中: struct stu { ...... }; struct stu student;  C++语言中: struct stu { . ...

  10. Linux:使用LVM进行磁盘管理

    LVM的概念 LVM 可以实现对磁盘的动态管理,在磁盘不用重新分区的情况下动态调整文件系统的大 小,利用 LVM 管理的文件系统可以跨越磁盘. "/boot"分区用于存放系统引导文 ...