vue中代理解决跨域

摘要:简单的讲就是你在一个地方使用另一个地方的资源,被浏览器给挡下来了,不让不用!当然,它挡下来是有自己理由的:为了安全。我是用vue开发的,就vue代理模式解决跨域说明一下。

跨域是什么

简单的讲就是你在一个地方使用另一个地方的资源,被浏览器给挡下来了,不让不用!当然,它挡下来是有自己理由的:为了安全。


解决跨域

我是用vue开发的,就vue代理模式解决跨域说明一下。

1、在vue.config.js中这样写:

let devProxy = {
//获取ip信息
'/getIpMsg': {
target: "https://whois.pconline.com.cn/ipJson.jsp",//真实地址
ws: true,
changeOrigin: true,
pathRewrite: {
'/getIpMsg': ''
},
},
};
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true,
publicPath: process.env.NODE_ENV === "production" ? "./" : "/",
devServer: {
port: 8080,//端口
open: false,//项目启动后是否在浏览器自动打开
proxy: devProxy//代理服务器
},
})

target就是自己需要代理的真实地址getIpMsg你是可以自定义的。


2、创建一个http.ts(我是ts的,你也可以js):

import axios from "axios";
//创建请求
function createServe(config: any) {
let serve = axios.create({
timeout: 5000 //超时
});
//请求拦截器
serve.interceptors.request.use(
config => {
return config;
},
error => {
return Promise.reject(error)
}
)
//响应拦截器
serve.interceptors.response.use(
response => {
return response;
},
error => {
return Promise.reject(error)
}
)
return serve(config);
}

export default createServe;


3、创建一个request.ts:

import createServe from "./http"

//获取ip信息
export function getIpMsg(params = {}) {
return createServe({
method: "GET",
url: '/getIpMsg',
params
})
}


4、这样使用:

import { getIpMsg } from "@/api/request";

function test(){
getIpMsg()
.then(res => {
console.log(res);
})
}


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_12117