解决Vue请求No'Access-Control-Allow-Origin'错误
程序员文章站
2022-07-01 23:02:43
vue笔记——解决vue请求no 'access-control-allow-origin' 错误
一、问题描述
一般情况下我们在vue项目中使用vue-re...
vue笔记——解决vue请求no 'access-control-allow-origin' 错误
一、问题描述
一般情况下我们在vue项目中使用vue-resource这个请求数据的时候,可能会直接使用以下代码:
this.$http.get("https://api.douban.com//v2/movie/top250") .then(function (reponse) { console.log(reponse); })
这里我们使用的是get请求方法,如果请求的是本地数据,或者说着说请求的数据没有跨域,使用get方法是没有问题的。但是如果请求的是不同域的数据,就要受到同源策略的影响,请求不成功,并抛出no ‘access-control-allow-origin’ 错误。比如我们使用上方的代码请求豆瓣的数据,那么就会抛出以下的错误。
二、解决方法
在vue项目中受到同源策略的影响,使用get方法不能跨域请求数据,这个时候我们可以使用jsonp这样一种模式(或者称之为协议),来请求数据。例如我们要请求豆瓣的数据,只需将上述代码中的get给成jsonp即可:
this.$http.jsonp("https://api.douban.com//v2/movie/top250") .then(function (reponse) { console.log(reponse); })
这样就可以顺利请求到豆瓣的数据:
三、补充说明
http请求方法有多种:get、post、head、options、put、delete、trace、connect等8种方法。我们在项目中使用最多的是get和post请求。
在上文中我们提到使用jsonp代替get可以实现跨域请求,但是我们要明确一点,get是请求方法,但是jsonp不是请求方法。jsonp是一种请求的协议,或者你也可以称之为模式。
而且使用jsonp代替get之后,本质上使用的还是get请求方法,因为jsonp只支持get这一种网络请求方法。关于jsonp的更多知识,推荐你文章:说说json和jsonp,也许你会豁然开朗
推荐阅读
-
vue :src 文件路径错误问题的解决方法
-
解决Vue axios post请求,后台获取不到数据的问题方法
-
Nginx 解决WebApi跨域二次请求以及Vue单页面的问题
-
Jquery uploadify 多余的Get请求(404错误)的解决方法
-
使用sql server management studio 2008 无法查看数据库,提示 无法为该请求检索数据 错误916解决方法
-
Vue.js 中 axios 跨域访问错误问题及解决方法
-
解决vue-cli项目打包出现空白页和路径错误的问题
-
vue build错误异常的解决方法
-
Windows7 错误1053:服务没有及时响应启动或控制请求解决办法
-
IE6中ajax aborted错误请求中断解决方法