前端跨域解决方案之proxy跨域代理发送请求

一、在vue.config.js中配置

module.exports = {
    publicPath: process.env.NODE_ENV === 'production' ? './' : './',
    outputDir: 'dist',
    devServer: {
        disableHostCheck: true,
        proxy: {
            '/bigScreen' : { //接口开头通用路径
                target: "http://192.168.10.101:8090",//服务端地址
                changeOrigin: true,//开启代理
                secure: false,
                pathRewrite: {
                    '^/bigScreen' : '/' //接口开头通用路径
                },
              }
          },
      },
     ...
}

1.2配置中主要的参数说明
1.2.1 ‘/api’
捕获API的标志,如果API中有这个祖父出窜,那么就开始匹配代理,比如API请求/api/users,会被代理到http://www.baidu.com/api/users。

1.2.2 target
代理API地址,就是需要跨域的API地址。地址可以是域名,也可以是IP地址。如果是域名需要额外添加一个参数changeOrigin: true,否则会代理失败

1.2.3 pathRewrite
路径重写,也就是说会修改最终请求的API路径。比如访问的API路径/api/users,设置pathRewrite: {'^/api' : ''},后,最终代理访问的路径为:http://www.baidu.com/users,这个参数的目的是给大力命名后,在访问时把命名删除掉。

1.2.4 changeOrigin
这个参数可以让target参数是域名

1.2.5 secure
secure: false,不检查安全问题。设置后,可以接受运行在HTTPS上,可以使用无效证书的后端服务器。

1.2.6 其他参数配置查看http-proxy-middleware文档
其他的配置参数等信息,可以查看这里:https://github.com/chimurai/http-proxy-middleware


原文链接:https://blog.csdn.net/xuanhaiyang2008/article/details/101541830

二、请求配置,通过axios请求

1.如查请求头中“Content-Type:application/json;charset=UTF-8” json格式,则请发的数据为JSON数据,

axios({
	headers: {
		'deviceCode': 'A95ZEF1-47B5-AC90BF3'
	},
	method: 'post',
	url: '/api/lockServer/search',
	data: {
		username:username,
		pwd:pwd
	}
})

如查请求头中“Content-Type:application/x-www-form-urlencoded”格式,则请发的数据为字符串数据,(一般服务器默认)

import Qs from 'qs'
let data = {
	"username": "admin",
	"pwd": "admin"
}

axios({
	headers: {
		'deviceCode': 'A95ZEF1-47B5-AC90BF3'
	},
	method: 'post',
	url: '/api/lockServer/search',
	data: Qs.stringify(data)
})

2.axios请求封装

// request interceptor请求栏截器
service.interceptors.request.use(
    config => {
        let url = config.url
        // get参数编码
        if (config.method === 'get' && config.params) {
            url += '?'
            let keys = Object.keys(config.params)
            for (let key of keys) {
                url += `${key}=${encodeURIComponent(config.params[key])}&`
            }
            url = url.substring(0, url.length - 1)
            config.params = {}
        }
        config.url = url
         config.headers['Content-Type'] = 'application/json;charset=UTF-8'; //设置请求头
         config.headers['token'] = "adsfsdsf33qrwe"; //设置token
        return config
    },
    error => {
        console.log(error) // for debug
        return Promise.reject(error)
    }
)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值