proxy配置代理

通过代理配置可以实现以下几个作用

  1. 跨域请求处理:当前端应用运行在一个域名下,而需要请求的 API 接口位于另一个域名下时,由于浏览器的同源策略限制,会导致跨域请求失败。通过代理配置,可以将前端应用的请求先发送到同域名下的代理服务器,再由代理服务器转发请求到目标服务器,从而绕过跨域限制。

  2. 请求转发和中间件处理:代理配置可以用来对请求进行转发或者在请求和响应之间添加一些中间件逻辑,比如修改请求头、日志记录、权限验证等操作。这样可以对请求进行更灵活的控制和处理。

  3. 本地开发环境调试:在本地开发环境中,前端应用可能需要与后端 API 进行交互。通过代理配置,可以将前端应用发送的请求代理到本地运行的后端服务,方便开发人员在本地进行接口调试和开发。

常见的属性和方法

在代理配置中,通常会使用一些属性和方法来定制代理服务器的行为。以下是一些常见的属性和方法:

  1. target:指定要代理的目标服务器的地址,可以是一个字符串或者一个对象。

  2. changeOrigin:控制请求头中的 Host 值,如果设置为 true,则将请求的 Host 头部更改为目标 URL。默认为 false。

  3. pathRewrite:用于重写请求路径,可以将请求路径中的一部分内容替换为其他内容。

  4. onProxyReq:一个函数,在发送代理请求之前执行,可以用来修改请求头等信息。

  5. onProxyRes:一个函数,在收到代理响应后执行,可以用来修改响应数据等。

  6. logLevel:设置日志级别,用来控制代理服务器输出的日志信息的详细程度。

  7. secure:控制是否验证代理服务器的 SSL 证书,默认为 true。

  8. xfwd:控制添加 X-Forwarded-* 标头的行为,用来传递原始请求的信息。

例:请求某站的数据

创建一个channel.js文件,

fetch API 是一个用于发送网络请求的现代异步方法。返回一个 Promise 对象,使用 async/await 或者 .then() 方法来处理其返回的结果。通过 await 关键字,我们等待 Promise 对象成功解析后得到响应对象,然后再次使用 await 将响应对象转换为 JSON 格式的数据

export default {
    async getChannels() {
        var resp = await fetch('/x/web-interface/article/up/list');
        var data = await resp.json();
        console.log(data, 'data');
    }
}

触发getChannels()方法

<script>
import channelserv from '../../utils/channel'
export default {
  mounted() {
    channelserv.getChannels()
    .then(res => {
        console.log(res,'拿到的数据');
    })
    .catch(error => {
        console.error(error);
    });
  },
}
</script>

配置代理:在vue项目中创建vue.config.js文件,

module.exports = {
    devServer: {
        proxy: { //proxy配置代理
            '/x': { //凡是以/x开头的请求,进行代理
                target: 'https://api.bilibili.com',
                onProxyReq(proxyReq) { //添加请求头
                    proxyReq.setHeader('origin', 'https://www.bilibili.com');
                    proxyReq.setHeader('referer', 'https://www.bilibili.com/v/channel');
                }
            }
        }
    },
}

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用方法二中的创建代理配置文件来配置多个代理。在创建代理配置文件时,可以指定多个代理规则,每个规则对应一个代理目标。例如,可以创建一个名为proxy.config.js的文件,内容如下: ```javascript module.exports = { '/api1': { target: 'http://localhost:3000', changeOrigin: true, pathRewrite: { '^/api1': '' } }, '/api2': { target: 'http://localhost:4000', changeOrigin: true, pathRewrite: { '^/api2': '' } } } ``` 然后在vue.config.js中引入该配置文件,并将其作为devServer的proxy属性的值: ```javascript const proxyConfig = require('./proxy.config.js'); module.exports = { devServer: { proxy: proxyConfig } } ``` 这样就可以配置多个代理了。例如,当发送请求到`/api1`时,会被代理到`http://localhost:3000`;当发送请求到`/api2`时,会被代理到`http://localhost:4000`。 #### 引用[.reference_title] - *1* [vue配置proxy跨域代理](https://blog.csdn.net/weixin_68658847/article/details/128601635)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [React中使用proxy配置代理解决跨域问题](https://blog.csdn.net/yrqlyq/article/details/119649415)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值