diff --git a/http-client.env.json b/http-client.env.json index ebe70d1e..a63db22a 100644 --- a/http-client.env.json +++ b/http-client.env.json @@ -1,10 +1,10 @@ { "local": { - "baseUrl": "http://127.0.0.1:9200/orion-api", + "baseUrl": "http://127.0.0.1:9200/orion/api", "token": "Bearer YQJ3IpwJJv5HujIWY6ZTNDgUxXRY6aDt" }, "gateway": { - "baseUrl": "http://127.0.0.1:9200/orion-api", + "baseUrl": "http://127.0.0.1:9200/orion/api", "token": "Bearer YQJ3IpwJJv5HujIWY6ZTNDgUxXRY6aDt" } } diff --git a/orion-ops-launch/src/main/resources/application.yaml b/orion-ops-launch/src/main/resources/application.yaml index 55ae14f3..a160aba2 100644 --- a/orion-ops-launch/src/main/resources/application.yaml +++ b/orion-ops-launch/src/main/resources/application.yaml @@ -123,7 +123,7 @@ orion: version: @revision@ api: # 公共 api 前缀 - prefix: /orion-api + prefix: /orion/api # 是否开启跨域 cors: true websocket: diff --git a/orion-ops-ui/.env.development b/orion-ops-ui/.env.development index 5c239075..3d2dd973 100644 --- a/orion-ops-ui/.env.development +++ b/orion-ops-ui/.env.development @@ -1,4 +1,4 @@ -VITE_API_BASE_URL= 'http://127.0.0.1:9200/orion-api' +VITE_API_BASE_URL= 'http://127.0.0.1:9200/orion/api' VITE_WS_BASE_URL= 'ws://127.0.0.1:9200/orion/keep-alive' VITE_APP_VERSION= '1.0.0' VITE_SFTP_PREVIEW_MB= 2 diff --git a/orion-ops-ui/.env.production b/orion-ops-ui/.env.production index 5c239075..90593613 100644 --- a/orion-ops-ui/.env.production +++ b/orion-ops-ui/.env.production @@ -1,4 +1,4 @@ -VITE_API_BASE_URL= 'http://127.0.0.1:9200/orion-api' -VITE_WS_BASE_URL= 'ws://127.0.0.1:9200/orion/keep-alive' +VITE_API_BASE_URL= '/orion/api' +VITE_WS_BASE_URL= '/orion/keep-alive' VITE_APP_VERSION= '1.0.0' VITE_SFTP_PREVIEW_MB= 2 diff --git a/orion-ops-ui/src/api/interceptor.ts b/orion-ops-ui/src/api/interceptor.ts index 26dc5579..52998264 100644 --- a/orion-ops-ui/src/api/interceptor.ts +++ b/orion-ops-ui/src/api/interceptor.ts @@ -3,6 +3,7 @@ import axios from 'axios'; import { Message } from '@arco-design/web-vue'; import { useUserStore } from '@/store'; import { getToken } from '@/utils/auth'; +import { httpBaseUrl } from '@/utils/env'; import { reLoginTipsKey } from '@/types/symbol'; export interface HttpResponse { @@ -13,9 +14,7 @@ export interface HttpResponse { axios.defaults.timeout = 10000; axios.defaults.promptBizErrorMessage = true; -if (import.meta.env.VITE_API_BASE_URL) { - axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL; -} +axios.defaults.baseURL = httpBaseUrl; axios.interceptors.request.use( (config: AxiosRequestConfig) => { diff --git a/orion-ops-ui/src/components/app/footer/index.vue b/orion-ops-ui/src/components/app/footer/index.vue index 9834fb26..b9abe966 100644 --- a/orion-ops-ui/src/components/app/footer/index.vue +++ b/orion-ops-ui/src/components/app/footer/index.vue @@ -10,7 +10,7 @@ v{{ version }} - Copyright 2023 By lijiahang + Copyright 2024 By lijiahang diff --git a/orion-ops-ui/src/utils/env.ts b/orion-ops-ui/src/utils/env.ts index 4147b353..b53c0c4a 100644 --- a/orion-ops-ui/src/utils/env.ts +++ b/orion-ops-ui/src/utils/env.ts @@ -1,3 +1,31 @@ const debug = import.meta.env.MODE !== 'production'; +// http base url +export const httpBaseUrl = (() => { + const configBase = import.meta.env.VITE_API_BASE_URL; + if (configBase.startsWith('http')) { + // 固定 + return configBase; + } else { + // 动态 + const protocol = window.location.protocol; + const host = window.location.host; + return `${protocol}//${host}${configBase}`; + } +})(); + +// websocket base url +export const webSocketBaseUrl = (() => { + const configBase = import.meta.env.VITE_WS_BASE_URL; + if (configBase.startsWith('ws')) { + // 固定 + return configBase; + } else { + // 动态 + const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; + const host = window.location.host; + return `${protocol}//${host}${configBase}`; + } +})(); + export default debug; diff --git a/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts b/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts index 1c4b5da9..fb1a68de 100644 --- a/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts +++ b/orion-ops-ui/src/views/host/terminal/handler/sftp-transfer-manager.ts @@ -4,11 +4,10 @@ import { TransferReceiverType, TransferStatus, TransferType } from '../types/ter import { Message } from '@arco-design/web-vue'; import { getTerminalAccessToken } from '@/api/asset/host-terminal'; import { nextId } from '@/utils'; +import { webSocketBaseUrl } from '@/utils/env'; import SftpTransferUploader from './sftp-transfer-uploader'; import SftpTransferDownloader from './sftp-transfer-downloader'; -export const wsBase = import.meta.env.VITE_WS_BASE_URL; - // sftp 传输管理器实现 export default class SftpTransferManager implements ISftpTransferManager { @@ -99,7 +98,7 @@ export default class SftpTransferManager implements ISftpTransferManager { // 获取 access const { data: accessToken } = await getTerminalAccessToken(); // 打开会话 - this.client = new WebSocket(`${wsBase}/host/transfer/${accessToken}`); + this.client = new WebSocket(`${webSocketBaseUrl}/host/transfer/${accessToken}`); this.client.onerror = event => { // 打开失败将传输列表置为失效 Message.error('会话打开失败'); diff --git a/orion-ops-ui/src/views/host/terminal/handler/terminal-channel.ts b/orion-ops-ui/src/views/host/terminal/handler/terminal-channel.ts index d52513cf..5a4a665f 100644 --- a/orion-ops-ui/src/views/host/terminal/handler/terminal-channel.ts +++ b/orion-ops-ui/src/views/host/terminal/handler/terminal-channel.ts @@ -3,10 +3,9 @@ import { OutputProtocol } from '../types/terminal.protocol'; import { getTerminalAccessToken } from '@/api/asset/host-terminal'; import { Message } from '@arco-design/web-vue'; import { sleep } from '@/utils'; +import { webSocketBaseUrl } from '@/utils/env'; import TerminalOutputProcessor from './terminal-output-processor'; -export const wsBase = import.meta.env.VITE_WS_BASE_URL; - // 终端通信处理器 实现 export default class TerminalChannel implements ITerminalChannel { @@ -23,7 +22,7 @@ export default class TerminalChannel implements ITerminalChannel { // 获取 access const { data: accessToken } = await getTerminalAccessToken(); // 打开会话 - this.client = new WebSocket(`${wsBase}/host/terminal/${accessToken}`); + this.client = new WebSocket(`${webSocketBaseUrl}/host/terminal/${accessToken}`); this.client.onerror = event => { Message.error('无法连接至服务器'); console.error('error', event); diff --git a/orion-ops-ui/src/views/host/terminal/index.vue b/orion-ops-ui/src/views/host/terminal/index.vue index a665fb91..08bc5d86 100644 --- a/orion-ops-ui/src/views/host/terminal/index.vue +++ b/orion-ops-ui/src/views/host/terminal/index.vue @@ -88,7 +88,7 @@ // 默认标题 document.title = TerminalTabs.NEW_CONNECTION.title; // 注册关闭视口事件 - if (debug) { + if (!debug) { window.addEventListener('beforeunload', handleBeforeUnload); } });