前端解决跨域--proxy

一:普通代理

vue 中的 proxy 是利用了 Node 代理

vue.config.js 中配置:

module.exports = {
            devServer: {
              proxy: {
                  '/api': {
                      target: 'http://e.dxy.net',  // 后台接口域名
                      ws: true,        			  //如果要代理 websockets,配置这个参数
                      secure: false,  			  // 如果是https接口,需要配置这个参数
                      changeOrigin: true,  		  //是否跨域
                  }
              }
            }
        }

1;假设你要调取的接口是 http://e.dxy.net/api/test

2:axios.get(’/api/test’)

3:我们一般调接口 axios.get(’/api/test’),这样调是自动请求的当前域名,也就是本地就调用
localhost:8080/api/test

4:配置代理后,会做如下转发:

 localhost:8080/api/test  => http://e.dxy.net/api/test

二:用到pathRewrite的情况

1:当你调接口后端的命名没有统一给接口前加 /api 这类的标识,那么你可以自己加

2:假设你

	有一个的接口是 http://e.dxy.net/test,
    有一个的接口是 http://e.dxy.net/node,
    有一个的接口是 http://e.dxy.net/list

3:如果还是上面的配置,调用axios.get(’/test’),就会出现404的情况,因为代理中配置的是”/api“,不会走代理,此时需要用到 pathRewrite

4:我们将配置改为如下:

devServer: {
  proxy: {
      '/mine': {
          target: 'http://e.dxy.net',  // 后台接口域名
          ws: true,        //如果要代理 websockets,配置这个参数
          secure: false,  // 如果是https接口,需要配置这个参数
          changeOrigin: true,  //是否跨域
          pathRewrite:{
              '^/mine': '/'
          }
      }
  }
}

5:此时调用例子中的接口我们可以手动加类似标识,保持和配置一致:

 	axios.get('/mine/test')
    axios.get('/mine/node')
    axios.get('/mine/list')

6:此时的转发变成:

localhost:8080/mine/test    =>   http://e.dxy.net/mine/test   =>   http://e.dxy.net/test

7:这里pathRewrite配置的意思是将路径中的/mine重写为/

8:这样就能解决跨域啦。

(注:在浏览器调试工具的network中看到的路径还是 localhost:8080/mine/test)

三:全局代理

devServer: {
 proxy: 'http://e.dxy.net'
}

参考资料:https://blog.csdn.net/weixin_43972437/article/details/107291071

引用\[1\]中提到了一个关于解决前端跨域问题的方法,即使用代理(proxy)来转发请求。在引用\[2\]中的代码示例中,可以看到在webpack的配置文件中,通过设置devServer的proxy选项,将以'/proxy-api'开头的请求转发到目标地址'http://dnny.net'。这样前端发送的请求就会被代理服务器接收并转发到目标服务器,从而解决跨域问题。 如果请求的路径不是以固定字符串开头,如'/login'、'/user'、'/info'等,那么需要在前端进行处理,给接口加上一个标识符。可以使用pathRewrite选项来重写请求的地址,将标识符替换为空字符串,从而实现转发。具体的代码示例可以参考引用\[3\]中的示例。 总结起来,前端可以通过配置代理服务器来解决跨域问题。通过设置proxy选项,将需要跨域的请求转发到目标服务器,同时可以使用pathRewrite选项来处理不以固定字符串开头的请求路径。这样就能够在前端发送请求时绕过浏览器的同源策略,实现跨域请求。 #### 引用[.reference_title] - *1* *2* *3* [前端使用proxy解决跨域问题](https://blog.csdn.net/weixin_44594219/article/details/126720547)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值