什么是跨域
跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域
1 2 3 4 5 6
| 1. 协议跨域 http://a.baidu.com 访问 https://a.baidu.com; 2. 端口跨域 http://a.baidu.com:8080 访问 http://a.baidu.com:8081; 3. 域名跨域 http://a.baidu.com 访问 http://b.baidu.com;
|
解决方案(vue)
proxyTable:
找到项目config目录下面的index.js文件;
以豆瓣电影api为例,在proxyTable中添加如下代码。
1 2 3 4 5 6 7 8 9 10
| '/mapi': { target: 'https://api.douban.com/v2/movie/', changeOrigin: true, pathRewrite: { '^/mapi': '' }, onProxyReq: function(proxyReq, req, res) { console.log("原路径:" + req.originalUrl, "代理路径:" + req.path) } }
|
如何使用?
movie.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import request from '@/utils/request' export function getMovieList(url, params) { return request({ url: url, method: 'get', params }) } `` ` ------------
#### douban.vue
` `` javascript import { getMovieList } from "@/api/movie";
export default { name: "douban", data() { return { moviedata: null, }; }, methods: { getMoive: function(start, count) { getMovieList("/mapi/top250", { start: start, count: count, apikey: "0df993c66c0c636e29ecbb5344252a4a" }).then(res => { this.moviedata = res.subjects; console.log(res.subjects) }); } } };
|
最后效果:
::: hljs-center
:::
::: hljs-center
:::
补充一点:
配置proxyTable的方式仅限于本地开发环境,nginx服务器配置跨域可以参考 :nginx反向代理解决跨域