使用vue-resource 然后就是报出跨域错误,因为一次接触这类框架也不知道该怎么解决跨域 可以详细的讲解一下嘛
試試
Vue.http.options.xhr = { withCredentials: true }
或是
this.$http.jsonp('...', { credentials: true })
你请求的数据是什么东西?json
,还是html
?
看你用了jsonp
,理论上如果后端返回数据是正确包裹的json
格式,是没问题的。
那么什么是“正确包裹的json
”?大致上你得先了解jsonp
是个怎样解决get
请求跨域问题的,请看下图:
原来是通过加了一个
script
标签在html
里来拿数据的,知道script
标签怎么玩的么?如果不指定类型,她默认就是加载一段javascript
代码。OK,问题来了,既然她只能加载javascript
代码,那又是如果获取json
格式数据的?
这就是我说的,需要"正确包裹"了,看下面例子:
parseResponse({"Name": "Foo", "Id": 1234, "Rank": 7});
这就是一段
javascript
代码,调用全局的parseResponse
方法,并传入了一段json
数据{"Name": "Foo", "Id": 1234, "Rank": 7}
作为参数。
想到怎么拿这段数据了么?只要你自己写一个全局的parseResponse
方法,如下:
window.parseResponse = function(data){
//做你想做的事情吧
};
就这样,一个通过
jsonp
发送的请求,数据就被拿到了。
这里涉及几个问题:
jsonp
是需要后端特殊处理的,返回结果必须"正确包裹"
使用jsonp
就不需要后端再设置乱七八糟的header
了,但局限是只能用做get
请求
如果希望使用其它请求,譬如:post
,put
,delete
。。。,那还是需要后端做各种header
设置的
关于跨域是什么,强烈建议先看构建public APIs与CORS
6 回答2.8k 阅读✓ 已解决
6 回答2.1k 阅读
5 回答6.2k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
4 回答2.6k 阅读
2 回答924 阅读✓ 已解决
昨天也遇见这个问题,在
build/webpack.dev.conf.js
这个文件里面添加对应的http代理,具体的用法查看对应的地址这里使用的是
vue-cli
创建的,如果不是,可以搜索http代理相关的资料