gitee pages 请求gitee资源跨域
- 环境:vue3、windows、gitee pages
记录一次gitee pages利用gitee做文件存储请求跨域问题
- 在搭建这个博客开始,并不想搭建后台,为了方便后续的更改(只更改请求地址,不需要对其他部分进行变动)所以想把博客文件存在gitee上,然后通过请求gitee源数据拿到文件,展示出来。
- 结果,可想而知,首先,本地跨域:
1.解决vue本地跨域问题
在无法对服务器进行跨域设置的情况下,axios本地跨域的办法就是设置代理了,vue虚拟代理代码如下
在vue.config.js中
devServer: {
proxy: {
'/api': {
// 此处的写法,目的是为了 将 /api 替换成 请求地址
target: 'https://gitee.com/gpjy/back/raw/master/blog/',
// 允许跨域
changeOrigin: true,
ws: true,
pathRewrite: {
'^/api': ''
}
}
}
},
然后在main.js中设置请求根路径
import axios from 'axios'
axios.defaults.baseURL = '/api'
然后再试一次,完美解决本地跨域。 满心欢喜的部署到gitpages上,打开页面。跨域报错又来了。 嗯,仔细看了一下,自己博客的域名值xxx.gitee.io,而文件域名是gitee.io,跨域,正常! 怎么解决啊
2.解决部署后跨域问题
很简单,没解决.
3.解决方法
怎么做呢?
思路很简单,既然跨域,那让他们域名相同不就好了,直接将文件放在页面的根路径里请求就可以了
- 目录结构
blog
xxxx.md
- 请求地址
博客地址(gitpages地址)+blog+xxx.md 完美,不跨域,解决了。
4.优化
难不成我在本地调试使用本地代理,线上又要改请求地址,岂不是很麻烦?优化一下,判断一下实在本地还是线上就ok啦
- 代码 (main.js中)
import axios from 'axios'
axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? '博客地址' : '/api'