From 9263a2f98a99e7f90ab36608db94be2b443a4c0f Mon Sep 17 00:00:00 2001 From: Henry_Du <813367384@qq.com> Date: Sun, 21 Jun 2026 10:02:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=20debug-cdn-backend-unreacha?= =?UTF-8?q?ble.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug-cdn-backend-unreachable.md | 42 -------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 debug-cdn-backend-unreachable.md diff --git a/debug-cdn-backend-unreachable.md b/debug-cdn-backend-unreachable.md deleted file mode 100644 index 269e1ec..0000000 --- a/debug-cdn-backend-unreachable.md +++ /dev/null @@ -1,42 +0,0 @@ -# Debug Session: cdn-backend-unreachable - -- Status: OPEN -- Started: 2026-06-20 -- Symptom: - - After enabling Alibaba Cloud CDN for `ticket.fse-media.group`, ticket price calculation fails. - - The ticket query page does not display ticket items. -- Constraints: - - No business logic changes before runtime evidence. - - First code change in existing files must be instrumentation only. -- Hypotheses: - 1. CDN origin/path forwarding for API routes is incorrect. - 2. Frontend requests use relative URLs and now point at the CDN/static origin instead of backend. - 3. Backend CORS or host validation blocks requests from `ticket.fse-media.group`. - 4. HTTPS, certificate, or mixed-content policy blocks API requests. -- Next steps: - 1. Locate the ticket-order and ticket-query frontend request code. - 2. Identify backend API base URL configuration and deployment assumptions. - 3. Reproduce with browser/network evidence and add instrumentation only if needed. -- Runtime evidence: - 1. Live check on `https://ticket.fse-media.group/order` shows `GET /api/public/lines`, `GET /api/public/stations`, and `GET /api/public/config` all return `200`. - 2. Live check on `https://ticket.fse-media.group/search` shows `GET /api/public/tickets?q=` and `GET /api/public/popular` succeed, and the ticket list renders 23 rows. - 3. Direct fetch on the live site confirms `/api/public/fares/query?from=HC-01&to=HC-02` returns valid fare data. - 4. Frontend code uses same-origin relative API paths, so CDN did not break API origin resolution itself. - 5. Live responses for `/ticket-order.js`, `/ticket-search.js`, and `/public-status.js` return `Cache-Control: max-age=43200`, while the affected HTML pages reference them without version query parameters. -- Hypothesis result: - 1. CDN origin/path forwarding for API routes is incorrect: falsified by live `200` responses. - 2. Frontend requests use relative URLs and now point at the wrong origin: falsified by successful same-origin API responses. - 3. Backend CORS or host validation blocks CDN domain: falsified by successful browser fetches from the production page. - 4. HTTPS/certificate/mixed-content issue on API requests: not supported by runtime API evidence. -- Root cause direction: - 1. The codebase contained many hardcoded `http://ticket.fse-media.group/...` links in public pages and JS. - 2. In a CDN + HTTPS deployment, these hardcoded HTTP jumps can split users onto a different protocol path and create intermittent failures or stale-cache behavior. - 3. The affected public pages loaded critical JS assets without version parameters, while CDN/browser caching allowed 12-hour reuse of older scripts. - 4. The booking page had an independent selection-state bug: after both endpoints were selected, clicking a new station only replaced the destination and never restarted the origin/destination flow, which made fare/path results look "stuck". -- Fix applied: - 1. Replaced all hardcoded `http://ticket.fse-media.group` links in `web/*.html` and `web/*.js` with `https://ticket.fse-media.group`. - 2. This keeps all public navigation, ticket detail, and token detail links on the same HTTPS/CDN path as the working API requests. - 3. Added explicit version query parameters to the critical scripts in `ticket-order.html` and `ticket-search.html` so the CDN fetches a fresh asset URL after deployment. - 4. Updated `ticket-order.js` so that clicking a new station after a full start/end selection restarts the selection flow and clears stale route highlights. -- Pending verification: - 1. User to verify ticket price calculation and ticket search list under the CDN domain after redeploy/cache refresh.