当前位置:首页 > 开发语言 > 正文

vue使用axios解决跨域(vue中axios和ajax区别)

vue使用axios解决跨域(vue中axios和ajax区别)

老铁们,大家好,相信还有很多朋友对于vue使用axios解决跨域和vue中axios和ajax区别的相关问题不太懂,没关系,今天就由我来为大家分享分享vue使用axio...

老铁们,大家好,相信还有很多朋友对于vue使用axios解决跨域和vue中axios和ajax区别的相关问题不太懂,没关系,今天就由我来为大家分享分享vue使用axios解决跨域以及vue中axios和ajax区别的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

前后端分离项目,如何解决跨域问题

前后端分离项目跨域问题是不可避免的。通常情况下前端由React、Vue等框架编写,通过ajax请求服务端API,传输数据用json格式。

那么为什么有跨域的问题呢?解决跨域问题有哪些方式?搞清楚这两个问题我们需要了解一下什么是同源策略。

浏览器的同源策略

同源策略(Sameoriginpolicy)是一种安全约定,是所有主流浏览器最核心也是最基本的安全功能之一。同源策略规定:不同域的客户端脚本在没有明确授权的情况下,不能请求对方的资源。同源指的是:域名、协议、端口均相同。

比如我们访问一个网站

http://www.test.com/index.html,

那么这个页面请求如下地址得情况是这样的:

另外,同源策略又分如下两种情况:

DOM同源策略:禁止对不同源的页面DOM进行操作,主要防止iframe的情况。比如iframe标签里放一个支付宝付款的页面,如果没有同源策略,那么钓鱼网站除了域名不同,其他的则可以和支付宝的网站一模一样。

XMLHttpRequest同源策略:禁止使用XHR对象向不同源的服务器发起http请求。比如网站记录了银行的cookie,这个时候你访问了恶意网站,黑客拿到你的cookie,再通过ajax请求之前的银行网站,便可以轻易的拿到你的银行信息。

所以,正是因为有了同源策略,大家的网络环境才相对的安全一些。

跨域问题的解决办法

了解了同源策略,就知道为什么会有跨域问题的产生了,都是为了安全。但是实际研发中,大家还是需要跨域去访问资源。典型的应用场景就是前后端分离的项目了。那么我们如何去解决跨域问题呢?

CORS-跨域资源共享

CORS是一种W3C标准,定义了当产生跨域问题的时候,客户端与服务端如何通信解决跨域问题。实际上就是前后端约定好定义一些自定义的http请求头,让客户端发起请求的时候能够让服务端识别出来该请求是过还是不过。

浏览器将CORS请求分为简单请求和非简单请求:

简单请求

简单请求必须满足以下两个条件:

请求方式必须是HEAD、GET、POST三种方法之一。

Http请求头必须只能是:Accept、Accept-Lanuage、Content-Lanuage、Last-Event-ID、Content-Type,其中Content-Type只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain。

非简单请求

不满足简单请求条件的就是非简单请求。针对非简单请求,浏览器会发起预检请求。预检请求的意思是当浏览器检查到你的页面含有跨域请求的时候,会发送一个OPTIONS请求给对应的服务器,以检测服务器是否允许当前域名的跨域请求。如果服务端允许该域名请求,则返回204或200状态码,浏览器接收到允许请求时候再继续发送对应的GET/POST/PUT/DELETE请求。同时服务器端也会告知浏览器预检请求的缓存时长是多少,在这个时间范围内,浏览器不会再次发起预检请求。

原理基本上就是上面说的这些,实际业务中我们如何通过配置来解决跨域问题呢?基本上常见的就是三种方式:

nginx配置

通常我们在nginx增加如下配置即可解决跨域问题:

用nginx这种方式是最舒服的,不需要客户端和服务端多做其他工作,对代码无入侵。

jsonp

因为script标签是不受浏览器同源策略的影响,允许跨域请求资源(我们的每一个页面都引用了大量第三方js文件)。所以可以利用动态创建script标签,通过src属性发起跨域请求,这就是jsonp的原理。但是jsonp只支持GET请求,所以并不是一种好的方式。

服务端代码控制

可以在服务端增加对跨域请求的支持:

这种方式相当于全局过滤器,对所有请求都过滤一遍。

以上三种方式都可以一定程度上解决跨域问题,但是nginx配置和服务端控制不能同时存在,否则会报“Access-Control-Allow-OriginNotAllowMultiplevalue”的错误。个人比较推荐nginx配置的方式,一劳永逸,不需要每个web项目都去编写跨域的代码。

大家在工作中有没有遇到过跨域问题呢?都是怎么解决的?欢迎评论区交流讨论,共同学习~

Java培训有什么好的学习建议么

2019年IT互联网发展的依然非常迅速,而web前端这块很火,目前工资水平相对较高,在市场上也是人才比较稀缺,现在各个行业转行参加web前端培训学习的很多,今天给大家一些建议,希望新手在参加web前端培训或者是自学的过程中少走点弯路!

第一点:要有一个比较适合自己系统的学习方案,系统的学习教程,很多人在开始学习web前端的时候都不知道如何规划,也不知道web前端应该学什么内容。参加web前端培训班学了一遍之后才是真正的入门,然后就是不断的练习,不断的巩固,为之后的工作打下坚实的基础。

第二点:我看很多新手刚学web前端就看各种书籍,作为web前端的老人可以负责的告诉你,新手学习web前端我不能说看书没用,但是从作用和效率来讲,这是没多大用处的,所以当建议一你完成之后,你在拿着书籍去看,这个适合看书过给你带来非常的大帮助,这叫查缺补漏,你不看一页一页的看。这才是真正的提升。

建议三;当你真正web前端培训学习之后,你要看一些博客的文章,技术类的的,但是你没有学过一遍web前端之后就别看了,一样没有什么用,最基本的概念都没有。而且最好不要自学选择一个专业的前端培训班学习,现在要求非常高。都靠自己自学很难达到就业的水平。

学习web前端的四个阶段:

一部分:

html+div+css+ps切图+ftp网站上传(网站上线)阿里图标+html5标签+css3动画+手机网站开发+swiper.js+iscroll.js

二部分:

JavaScript+jQuery+Ajax+正则表达式+面向对象+js插件+代码性能优化+github+sea.js+require.js+gulp

三部分:

2D+3D应用+移动触屏事件touch+Canvas+Svg+多媒体技术+地理信息+本地存储+H5拖拽api+跨域操作+多线程+highcharts图表+bootstrap

四部分:

框架vue/react/Angular

前端学习的四个阶段一般是前端培训机构学习的四个阶段,除了这些一般还会有项目实操,但是对于自学的来说,基本没有什么阶段,这个就需要自己做一个好的学习计划了,找一些好的质量的学习资料,那么尚硅谷前端培训不仅有线下面授班同时还免费分享有前端学习视频供自学人员下载学习。

vue proxytable只能在开发环境跨域吗

跨域问题来源于JavaScript的同源策略,即只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。

多种WEB技术如何整合使用

近几年web技术井喷式的发展,具体用什么技术栈还得看公司的具体业务,不过在国内一般的公司都用vue全家桶比较多一些,活跃度也蛮高的,一些有实力的大厂比如我所在的网易都是自己有自己的框架,这样对于整个框架的掌控力更加到位,但是这一般都是一些具有实力的大厂才回的,一般而言比较活跃的vue,react,angular.就可以解决一般公司的业务需求了。

vue搭配什么做前端开发比较好

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。

1、如果你是在做pc端的应用,最好的选择是ElementUI。

npmielement-ui-S

最简单的UI写法:http://element-cn.eleme.io/#/zh-CN/component/installation

2、APPmobile应用的话,最好选择AUI或ionIc

文档:http://www.auicss.com/doc/v/2/doc_id/1

AUI2.0是一套全新的AUI框架,在1.X基础上进行了重新架构。在2.0中,全局使用rem控制尺寸,完美适应不同分辨率移动设备;新加入的主题样式表方便开发者自定义基础颜色样式,完成APP主题的定制。完美兼容IOS5.1+到Android4.2+。因此我认为他是一款不错的UI插件。

文章到此结束,如果本次分享的vue使用axios解决跨域和vue中axios和ajax区别的问题解决了您的问题,那么我们由衷的感到高兴!

最新文章