ToB企服应用市场:ToB评测及商务社交产业平台
标题:
vue.config.js配置跨域 axios.create实例封装 出现跨域题目
[打印本页]
作者:
北冰洋以北
时间:
2024-6-8 16:48
标题:
vue.config.js配置跨域 axios.create实例封装 出现跨域题目
vue.config.js文件一样
const { defineConfig } = require( '@vue/cli-service' )
const path = require( 'path' )
module.exports = defineConfig( {
transpileDependencies: true,
productionSourceMap: false,
publicPath: process.env.NODE_ENV === 'production' ? '/production-sub-path/' : '/',
outputDir: 'dist',
assetsDir: 'static',
devServer: {
port: 8090, // 修改开发服务器运行的端口号
open: true,
host: "localhost",
proxy: {
'/appApi': {
target: 'https://****************/appApi', // 反向代理 线上
// target: 'http://192.168.3.17:8092', // 本地
ws: true,
changeOrigin: true,
pathRewrite: {
'^/appApi': ''
}
}
},
},
pluginOptions: {
"style-resources-loader": {
preProcessor: "less",
patterns: [path.resolve( __dirname, "./src/assets/style/commons.less" )] // 全局引入less
}
},
chainWebpack: ( config ) => {
config.plugin( 'define' ).tap( ( definitions ) => {
Object.assign( definitions[0], {
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false'
} )
return definitions
} )
}
} )
复制代码
两种情况,第一种是使用了axios.create实例封装后的哀求,第二种是 直接使用axios进行哀求
require.js文件
import axios from "axios";
import router from "../router";
import { ElMessage } from 'element-plus';
import { info } from '@/store/index';
// 实例
const useInfo = info()
/** 默认配置*/
const instance = axios.create( {
baseURL: window._CONFIG["domianURL"],
timeout: "10000",
headers: {
"Content-Type": "application/json;charset=UTF-8",
"Access-Control-Allow-Origin": "*",
},
} );
/** 请求拦截 */
instance.interceptors.request.use( ( config ) => {
// 登录验证
if ( useInfo.token ) {
config.headers.Authorization = `Bearer ${ useInfo.token }`;
}
return config;
} );
/** 响应拦截 */
instance.interceptors.response.use( ( response ) => {
if ( response && response.data.status == 200 ) {
return response.data;
} else {
if ( response.status == 501 ) {
router.push( "/login" );
ElMessage.error( '信息丢失,请重新登录' );
} else {
ElMessage.error( response.data.msg );
console.log( response.data, 'data' )
return Promise.reject( response.data );
}
}
}, ( error ) => {
if ( error.message == 'timeout of ' + error.config.timeout + 'ms exceeded' ) {
ElMessage.error( '请求时间超过' + ( error.config.timeout / 1000 ) + '秒,请保证网络通畅' );
} else {
ElMessage.error( error );
}
} );
/**封装常用请求类型 */
export const post = ( url, data ) => instance.post( url, data );
export const get = ( url, params ) => instance.get( url, { params } );
export default instance
复制代码
// login.js文件
import { post } from "@/utils/request";
// 登录
export const userLogin = ( data ) => post( '/appApi/app/userLogin/userLogin', data );
复制代码
import { ref } from "vue";
import { ElMessage } from 'element-plus'
import { User, Lock } from '@element-plus/icons-vue'
import { info } from '@/store/index'
import { useRouter } from "vue-router";
/**变量 */
const ruleForm = ref( {
mobile: "",
password: "",
flag: 2 // 1小程序 2后台
} );
const rules = {
mobile: [
{
required: true,
message: "请输入用户名",
trigger: "blur",
},
],
password: [
{
required: true,
message: "请输入密码",
trigger: "blur",
},
],
};
/**实例 */
const useInfo = info()
const router = useRouter()
// 这种不行 一直显示跨域 似乎没有被代理到,这种是经过axios.create封装后的
import { userLogin } from "@/api/login.js"
userLogin( '/appApi/app/userLogin/userLogin', ruleForm.value )
// 这种可以跨域,这种直接使用axios
import axios from 'axios'
axios.post( '/appApi/app/userLogin/userLogin', ruleForm.value )
复制代码
------------------------------------------------第一种 不停表现跨域--------------------------------------------------
// 这种不行 一直显示跨域 似乎没有被代理到,这种是经过axios.create封装后的
import { userLogin } from "@/api/login.js"
userLogin( '/appApi/app/userLogin/userLogin', ruleForm.value )
复制代码
------------------------------------------------第二种 可以正常哀求--------------------------------------------------
// 这种可以跨域,这种直接使用axios
import axios from 'axios'
axios.post( '/appApi/app/userLogin/userLogin', ruleForm.value )
复制代码
有前辈遇到过这种题目吗?axios.create怎么跨域,是我配置的题目吗?请大佬 指导一下
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4