Nginx sub_filter 치환 규칙 우회를 위해 appUrl 호출 시 백틱 적용

This commit is contained in:
2026-05-26 22:16:48 +09:00
parent 519935e7a5
commit eda3b6a828
+11 -11
View File
@@ -109,7 +109,7 @@ document.addEventListener('DOMContentLoaded', () => {
checkAuth();
function logUiEvent(action, details = {}) {
fetch(appUrl('/api/settings/log-ui-event'), {
fetch(appUrl(`/api/settings/log-ui-event`), {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ action, details })
@@ -120,7 +120,7 @@ document.addEventListener('DOMContentLoaded', () => {
if (!dbSizeBadge) return;
dbSizeBadge.textContent = '용량 확인 중';
const targetUrl = appUrl('/api/settings/database-size');
const targetUrl = appUrl(`/api/settings/database-size`);
try {
const response = await fetch(targetUrl);
if (!response.ok) {
@@ -198,7 +198,7 @@ document.addEventListener('DOMContentLoaded', () => {
// 여기서는 is_admin 확인 + 세션 만료 시 다시 dbx-main 으로 보내는 역할만 한다.
async function checkAuth() {
try {
const res = await fetch(appUrl('/api/users/me'));
const res = await fetch(appUrl(`/api/users/me`));
if (res.ok) {
currentUser = await res.json();
if (btnDataManagement) {
@@ -207,7 +207,7 @@ document.addEventListener('DOMContentLoaded', () => {
} else if (res.status === 401) {
// 세션 만료 — dbx-main 로그인으로 위임 (next 로 현재 위치 보존)
const next = encodeURIComponent((APP_BASE_PATH || '') + '/');
window.location.href = appUrl('/login') + '?next=' + next;
window.location.href = appUrl(`/login`) + '?next=' + next;
}
} catch (error) {
console.error('Auth check error', error);
@@ -313,7 +313,7 @@ document.addEventListener('DOMContentLoaded', () => {
};
try {
const res = await fetch(appUrl('/api/orders/upload'), {
const res = await fetch(appUrl(`/api/orders/upload`), {
method: 'POST',
body: formData
});
@@ -970,7 +970,7 @@ document.addEventListener('DOMContentLoaded', () => {
}, 500);
try {
const res = await fetch(appUrl('/api/settings/optimize'), {
const res = await fetch(appUrl(`/api/settings/optimize`), {
method: 'POST'
});
const data = await res.json();
@@ -1049,7 +1049,7 @@ document.addEventListener('DOMContentLoaded', () => {
btnBackupDb.innerHTML = '<i class="fa-solid fa-spinner fa-spin"></i> 백업 생성 중...';
try {
const res = await fetch(appUrl('/api/settings/backup-db'));
const res = await fetch(appUrl(`/api/settings/backup-db`));
if (res.ok) {
await downloadFileFromResponse(res, 'OMS_DB_backup.db');
showToast('DB 백업 다운로드가 완료되었습니다.', 'success');
@@ -1074,7 +1074,7 @@ document.addEventListener('DOMContentLoaded', () => {
btnDownloadEventLog.innerHTML = '<i class="fa-solid fa-spinner fa-spin"></i> 로그 생성 중...';
try {
const res = await fetch(appUrl('/api/settings/download-log'));
const res = await fetch(appUrl(`/api/settings/download-log`));
if (res.ok) {
await downloadFileFromResponse(res, 'OMS_event_log.csv');
showToast('이벤트 로그 다운로드가 완료되었습니다.', 'success');
@@ -1174,7 +1174,7 @@ document.addEventListener('DOMContentLoaded', () => {
}
try {
const res = await fetch(appUrl('/api/settings/restore-db'), {
const res = await fetch(appUrl(`/api/settings/restore-db`), {
method: 'POST',
body: formData
});
@@ -1297,7 +1297,7 @@ document.addEventListener('DOMContentLoaded', () => {
if (deleteEventSource) deleteEventSource.close();
};
const res = await fetch(appUrl('/api/settings/delete-orders-by-date-range'), {
const res = await fetch(appUrl(`/api/settings/delete-orders-by-date-range`), {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
@@ -1355,7 +1355,7 @@ document.addEventListener('DOMContentLoaded', () => {
btnDeleteAllOrders.innerHTML = '<i class="fa-solid fa-spinner fa-spin"></i> 전체 삭제 중...';
try {
const res = await fetch(appUrl('/api/settings/delete-all-orders'), {
const res = await fetch(appUrl(`/api/settings/delete-all-orders`), {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ password: deletePassword })