gitee pages 请求gitee资源跨域

77 阅读1分钟

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'