fix and update
This commit is contained in:
@@ -3,29 +3,20 @@ const configuredApiUrl = (process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:3
|
||||
const configuredWsUrl = (process.env.NEXT_PUBLIC_WS_URL ?? 'ws://localhost:8085/ws').replace(/\/$/, '');
|
||||
|
||||
function resolveBrowserApiBaseUrl(): string {
|
||||
// На сервере (SSR) обращаемся к API напрямую по настроенному URL.
|
||||
if (typeof window === 'undefined') {
|
||||
return configuredApiUrl;
|
||||
}
|
||||
|
||||
// Если URL уже относительный — используем как есть.
|
||||
if (configuredApiUrl.startsWith('/')) {
|
||||
return configuredApiUrl.replace(/\/+$/, '') || API_ORIGIN_PROXY_PREFIX;
|
||||
}
|
||||
|
||||
try {
|
||||
const configured = new URL(configuredApiUrl);
|
||||
const sameHost =
|
||||
configured.hostname === window.location.hostname &&
|
||||
(configured.port || (configured.protocol === 'https:' ? '443' : '80')) ===
|
||||
(window.location.port || (window.location.protocol === 'https:' ? '443' : '80'));
|
||||
|
||||
if (sameHost) {
|
||||
return API_ORIGIN_PROXY_PREFIX;
|
||||
}
|
||||
|
||||
return configuredApiUrl.replace(/\/+$/, '');
|
||||
} catch {
|
||||
return API_ORIGIN_PROXY_PREFIX;
|
||||
}
|
||||
// В браузере ВСЕГДА ходим через same-origin прокси /idp-api (Next.js rewrites
|
||||
// проксируют на внутренний api-gateway). Это исключает CORS и работу через
|
||||
// отдельный домен API (например api.idpmvk.lpr) для запросов самого UI IdP.
|
||||
return API_ORIGIN_PROXY_PREFIX;
|
||||
}
|
||||
|
||||
function resolveBrowserWsBaseUrl(): string {
|
||||
@@ -33,23 +24,8 @@ function resolveBrowserWsBaseUrl(): string {
|
||||
return configuredWsUrl;
|
||||
}
|
||||
|
||||
const apiBase = resolveBrowserApiBaseUrl();
|
||||
if (apiBase === API_ORIGIN_PROXY_PREFIX) {
|
||||
const scheme = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
||||
return `${scheme}//${window.location.host}${API_ORIGIN_PROXY_PREFIX}/ws`;
|
||||
}
|
||||
|
||||
try {
|
||||
const configured = new URL(configuredWsUrl);
|
||||
if (configured.hostname !== window.location.hostname) {
|
||||
const scheme = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
||||
return `${scheme}//${window.location.host}${API_ORIGIN_PROXY_PREFIX}/ws`;
|
||||
}
|
||||
} catch {
|
||||
// keep configured URL
|
||||
}
|
||||
|
||||
return configuredWsUrl;
|
||||
const scheme = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
||||
return `${scheme}//${window.location.host}${API_ORIGIN_PROXY_PREFIX}/ws`;
|
||||
}
|
||||
|
||||
export function getApiUrl(): string {
|
||||
@@ -313,6 +289,7 @@ export interface IdentifyResponse {
|
||||
isPinEnabled: boolean;
|
||||
isTotpEnabled?: boolean;
|
||||
otpChannels?: OtpChannel[];
|
||||
otpBackupChannels?: OtpChannel[];
|
||||
methods?: LoginMethod[];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user