# Bug 001: CORS Blocking Static File Requests on HuggingFace Spaces **Status**: FIXED **Date Found**: 2025-12-11 **Severity**: Critical (blocks core functionality) --- ## Symptoms 1. Frontend loads successfully, case dropdown populates 2. Segmentation API call succeeds (200 OK, ~34s processing time) 3. Results panel shows metrics (Dice Score, Volume, Time) 4. NiiVue viewer shows "loading..." then error: **"Failed to load volume: Failed to fetch"** ## Root Cause The CORS `allow_origin_regex` pattern in `src/stroke_deepisles_demo/api/main.py` was incorrect: ```python # WRONG - expects double hyphens allow_origin_regex=r"https://.*--stroke-viewer-frontend(--.*)?\.hf\.space" # Actual frontend URL uses single hyphen: # https://vibecodermcswaggins-stroke-viewer-frontend.hf.space # ^ single hyphen ``` The regex expected `--` (double hyphen) between username and space name, but HuggingFace Spaces direct URLs use single hyphens. ## HuggingFace Spaces URL Formats | Format | Pattern | Example | |--------|---------|---------| | **Direct** | `{username}-{spacename}.hf.space` | `vibecodermcswaggins-stroke-viewer-frontend.hf.space` | | **Proxy/Embed** | `{username}--{spacename}--{hash}.hf.space` | `vibecodermcswaggins--stroke-viewer-frontend--abc123.hf.space` | The original regex only matched the proxy format, not the direct format. ## Fix ```python # CORRECT - matches both formats allow_origin_regex=r"https://.*stroke-viewer-frontend.*\.hf\.space" ``` ## Logs Evidence ``` INFO: 10.16.13.79:42834 - "POST /api/segment HTTP/1.1" 200 OK ``` The API call succeeded, but subsequent static file fetches for NIfTI volumes were blocked by CORS (browser silently blocks and shows "Failed to fetch"). ## Files Changed - `src/stroke_deepisles_demo/api/main.py` - Fixed regex - `docs/specs/frontend/36-frontend-without-gradio-hf-spaces.md` - Updated spec ## Verification After fix: 1. Redeploy backend to HF Spaces 2. Refresh frontend 3. Run segmentation 4. NiiVue should load and display the DWI + prediction overlay ## Prevention - Test CORS configuration with actual production URLs before deployment - Add integration test that verifies static file CORS headers - Document HF Spaces URL formats in spec