diff --git a/http_errors/403.json b/http_errors/403.json new file mode 100644 index 0000000..213180c --- /dev/null +++ b/http_errors/403.json @@ -0,0 +1 @@ +{"ok":false,"error":"forbidden"} diff --git a/http_errors/404.json b/http_errors/404.json new file mode 100644 index 0000000..7e686f6 --- /dev/null +++ b/http_errors/404.json @@ -0,0 +1 @@ +{"ok":false,"error":"not_found"} diff --git a/http_errors/500.json b/http_errors/500.json new file mode 100644 index 0000000..6dac872 --- /dev/null +++ b/http_errors/500.json @@ -0,0 +1 @@ +{"ok":false,"error":"internal_error"} diff --git a/public/common/common.js b/public/common/common.js index f7009ec..55bc370 100644 --- a/public/common/common.js +++ b/public/common/common.js @@ -51,10 +51,15 @@ window.cnDateStr = cnDateStr ;(function handleSetToken() { try { const u = new URL(window.location.href) - const token = u.searchParams.get('set_token') + const hashRaw = String(u.hash || '').replace(/^#/, '') + if (!/(^|[?&])set_token=/.test(hashRaw)) return + const hashParams = new URLSearchParams(hashRaw.startsWith('?') ? hashRaw.slice(1) : hashRaw) + const token = hashParams.get('set_token') if (token) { localStorage.setItem('toolbox_creds_token', token) - u.searchParams.delete('set_token') + hashParams.delete('set_token') + const nextHash = hashParams.toString() + u.hash = nextHash ? `#${nextHash}` : '' window.history.replaceState(null, '', u.toString()) } } catch {} diff --git a/public/tools/ai-lib/ai-lib.js b/public/tools/ai-lib/ai-lib.js index ad1b0c5..9d93493 100644 --- a/public/tools/ai-lib/ai-lib.js +++ b/public/tools/ai-lib/ai-lib.js @@ -1292,8 +1292,11 @@ ;(async function tryAutoFill() { try { const token = localStorage.getItem('toolbox_creds_token') || '' - const url = '/api/ai-lib/auth/local_creds' + (token ? '?token=' + encodeURIComponent(token) : '') - const r = await fetch(url, { credentials: 'same-origin', cache: 'no-store' }) + const r = await fetch('/api/ai-lib/auth/local_creds', { + headers: token ? { 'X-Local-Creds-Token': token } : {}, + credentials: 'same-origin', + cache: 'no-store' + }) const d = await r.json().catch(() => null) if (d && d.ok && d.creds) { if (d.creds.username) el('login-user').value = d.creds.username diff --git a/public/tools/cloud_notes/cloud_notes.js b/public/tools/cloud_notes/cloud_notes.js index b5d50a6..682a6cd 100644 --- a/public/tools/cloud_notes/cloud_notes.js +++ b/public/tools/cloud_notes/cloud_notes.js @@ -2095,8 +2095,11 @@ const cn = (() => { ;(async function tryAutoFill() { try { const token = localStorage.getItem('toolbox_creds_token') || '' - const url = '/api/cloud_notes/auth/local_creds' + (token ? '?token=' + encodeURIComponent(token) : '') - const r = await fetch(url, { credentials: 'same-origin', cache: 'no-store' }) + const r = await fetch('/api/cloud_notes/auth/local_creds', { + headers: token ? { 'X-Local-Creds-Token': token } : {}, + credentials: 'same-origin', + cache: 'no-store' + }) const d = await r.json().catch(() => null) if (d && d.ok && d.creds) { if (d.creds.username) el('cn-username').value = d.creds.username diff --git a/public/tools/cloud_sheets/cloud_sheets.js b/public/tools/cloud_sheets/cloud_sheets.js index 1588676..a0a1124 100644 --- a/public/tools/cloud_sheets/cloud_sheets.js +++ b/public/tools/cloud_sheets/cloud_sheets.js @@ -1064,8 +1064,11 @@ const cs = (() => { ;(async function tryAutoFill() { try { const token = localStorage.getItem('toolbox_creds_token') || '' - const url = '/api/cloud_sheets/auth/local_creds' + (token ? '?token=' + encodeURIComponent(token) : '') - const r = await fetch(url, { credentials: 'same-origin', cache: 'no-store' }) + const r = await fetch('/api/cloud_sheets/auth/local_creds', { + headers: token ? { 'X-Local-Creds-Token': token } : {}, + credentials: 'same-origin', + cache: 'no-store' + }) const d = await r.json().catch(() => null) if (d && d.ok && d.creds) { if (d.creds.username) el('cs-username').value = d.creds.username diff --git a/public/tools/doc_cloud_keeper/doc_cloud_keeper.js b/public/tools/doc_cloud_keeper/doc_cloud_keeper.js index ccbf351..c2b4752 100644 --- a/public/tools/doc_cloud_keeper/doc_cloud_keeper.js +++ b/public/tools/doc_cloud_keeper/doc_cloud_keeper.js @@ -1630,8 +1630,11 @@ SHA256: ${esc(result.sha256 || '-')} ;(async function tryAutoFill() { try { const token = localStorage.getItem('toolbox_creds_token') || '' - const url = '/api/doc_cloud_keeper/auth/local_creds' + (token ? '?token=' + encodeURIComponent(token) : '') - const r = await fetch(url, { credentials: 'same-origin', cache: 'no-store' }) + const r = await fetch('/api/doc_cloud_keeper/auth/local_creds', { + headers: token ? { 'X-Local-Creds-Token': token } : {}, + credentials: 'same-origin', + cache: 'no-store' + }) const d = await r.json().catch(() => null) if (d && d.ok && d.creds) { if (d.creds.username) el('dck-username').value = d.creds.username diff --git a/public/tools/doc_cloud_keeper/index.html b/public/tools/doc_cloud_keeper/index.html index 7ec4d91..c2a2ffd 100644 --- a/public/tools/doc_cloud_keeper/index.html +++ b/public/tools/doc_cloud_keeper/index.html @@ -16,7 +16,7 @@
文件数: 0 占用: 0 B - 回收站: 0⚒ + 回收站: 0