vue配置多个跨域+下载打包

本文介绍了如何在前端项目中通过axios和jszip等库实现从阿里云OSS下载文件,并进行批量打包。重点讲解了如何配置proxy代理以处理跨域请求,以及关键步骤如修改URL、依赖安装和封装下载方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本地项目需要下载阿里云上的文件,而且需要前端下载后打包

1、配置多个代理
devServer: {
    host: '0.0.0.0',
    port: port,
    proxy: {
      [process.env.VUE_APP_BASE_API]: {//配置1
        target: `http://192.168.0.114:8088`,//本地后端接口
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      },
      '/oa': {//配置2
        target: 'http://hsh-dongyu.oss-cn-beijing.aliyuncs.com/',  //目标接口域名
        pathRewrite: {
          '^/oa': '/oa'   //重写接口
        },
        changeOrigin: true,  //是否跨域
      },
    },
    disableHostCheck: true
},
2、代理地址
http://hsh-dongyu.oss-cn-beijing.aliyuncs.com/oa/1608795278991/%25E5%2593%25A6%25E5%259A%25AF%25E5%259A%25AF.docx?Expires=1924154962&OSSAccessKeyId=LTAI4G2mj8FUZ9g8xRrKSCV1&Signature=MUFTmuL8BiA0335HK0D94QrXGxxxxxxx
http://hsh-dongyu.oss-cn-beijing.aliyuncs.com/oa/1608795278991/%25E5%2593%25A6%25E5%259A%25AF%25E5%259A%25AF.docx?Expires=1924154962&OSSAccessKeyId=LTAI4G2mj8FUZ9g8xRrKSCV1&Signature=MUFTmuL8BiA0335HK0D94QrXGxxxxxxx

3、修改地址,使其匹配代理
var url1 = '上面地址1';
var url2 = '上面地址2';
url2 = url2.slice(url2.indexOf('/oa')) //'/oa/1608795278991/%25E5%2593%25A6%25E5%259A%25AF%25E5%259A%25AF.docx?Expires=1924154962&OSSAccessKeyId=LTAI4G2mj8FUZ9g8xRrKSCV1&Signature=MUFTmuL8BiA0335HK0D94QrXGxxxxxxx'
url2 = url2.slice(url2.indexOf('/oa'))//'/oa/1608795278991/%25E5%2593%25A6%25E5%259A%25AF%25E5%259A%25AF.docx?Expires=1924154962&OSSAccessKeyId=LTAI4G2mj8FUZ9g8xRrKSCV1&Signature=MUFTmuL8BiA0335HK0D94QrXGxxxxxxx'
//上面地址修改后就能够正常代理了
4、安装下载打包的依赖包
npm add axios
npm add jszip
npm add file-saver
5、封装下载方法
import axios from 'axios'
import JSZip from 'jszip'
import FileSaver from 'file-saver'
const getFile = url => {
    return new Promise((resolve, reject) => {
        axios({
            method:'get',
            url,
            responseType: 'blob',
            // headers: {'Content-Type': 'multipart/form-data'}
        }).then(data => {
            resolve(data.data)
        }).catch(error => {
            reject(error.toString())
        })
    })
}
export default {
	methods: {
		handleBatchDownload() {
            const data = [url1 , url2] // 需要下载打包的路径
            const zip = new JSZip()
            const cache = {}
            const promises = []
            data.forEach(item => {
                const promise = getFile(item).then(data => { // 下载文件, 并存成ArrayBuffer对象
                    const arr_name = item.split("/") //根据业务需求来修改文件名称,不同项目文件名称获取方法不尽相同。
                    const file_name = arr_name[arr_name.length - 1] // 获取文件名
                    zip.file(file_name, data, { binary: true }) // 逐个添加文件
                    cache[file_name] = data
                })
                promises.push(promise)
            })
            Promise.all(promises).then(() => {
                zip.generateAsync({type:"blob"}).then(content => { // 生成二进制流
                    FileSaver.saveAs(content, "打包下载.zip") // 利用file-saver保存文件
                })
            })
	}
}
6、执行handleBatchDownload()方法即可打包下载
7、注意:
	1.文件名称需要根据项目来修改,当文件名称后缀为正确的文件后缀时,则表示修改成功。
	2.下载方法执行时 403则为跨域了说明跨域匹配失败,其他问题根据业务需求修改下载方法。

8、参考文章
	https://www.mmxiaowu.com/article/59b23f5d5b06a403cf687ed6
	https://blog.youkuaiyun.com/weixin_34185512/article/details/93916884?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control
	https://blog.youkuaiyun.com/liwan_1219/article/details/103879821
在nginx中配置多层的方法如下: 1. 首先,在nginx的配置文件中找到你的vue项目所在的location块。这个块通常会包含类似以下的配置: ``` location / { # 配置vue项目的根目录 root /path/to/your/vue/project; try_files $uri $uri/ /index.html; } ``` 2. 在这个location块内部,添加以下配置来实现: ``` location /api/ { # 配置api请求的代理地址 proxy_pass http://api.example.com/; } location /backend/ { # 配置后端请求的代理地址 proxy_pass http://backend.example.com/; } ``` 其中,`/api/`对应你的接口请求路径,`http://api.example.com/`是你的实际接口地址。同样地,`/backend/`是你后端请求的路径,`http://backend.example.com/`是你的后端实际地址。 3. 保存配置文件并重新加载nginx。 这样配置之后,当你的vue项目发起`/api/`开头的请求时,nginx会将请求代理到`http://api.example.com/`,实现请求。同理,`/backend/`开头的请求也会被代理到后端服务器。 请注意,以上是一个简单的示例,你需要根据你的实际情况修改配置。另外,为了确保安全性,你可能还需要配置一些额外的安全措施,比如重写HTTP头信息或启用CORS。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [nginx 上部署vue,同时转发多台服务器,实现负载均衡](https://blog.youkuaiyun.com/hyp187/article/details/107512590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Vue打包部署到nginx设置方法](https://download.youkuaiyun.com/download/weixin_38557896/12937934)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值