- django-cors-headers with env-driven CORS_ALLOWED_ORIGINS, CORS_ALLOW_ALL_ORIGINS, CORS_ALLOW_CREDENTIALS and CSRF_TRUSTED_ORIGINS; same-origin traffic is unaffected and a disallowed origin gets no CORS headers. Token auth needs no cookies, so credentials stay off by default. - TRUST_PROXY_HEADERS=true lets a TLS-terminating proxy supply X-Forwarded-Proto/Host for correct absolute URLs. - API media URLs (raw/thumbnail/upload/similarity/staged previews) are now absolute, built from the request host, so <img>/<video>/fetch() keep working when the SPA is served from another origin. Signed URLs are still per-user; nothing is stored in the DB. - The SPA gains VITE_API_BASE (build-time, empty = same-origin) applied by a small apiUrl() helper used for XHR/fetch and the few URL fallbacks. Verified with a throwaway instance: preflight and GET responses carry the allowed origin, foreign origins get nothing, media GETs include CORS for cross-origin fetch(), and payload URLs use the request host (dev :8000 unchanged).
12 lines
186 B
Plaintext
12 lines
186 B
Plaintext
Django>=6.0,<6.2
|
|
djangorestframework>=3.17
|
|
django-filter>=25.1
|
|
django-cors-headers>=4.9
|
|
Pillow>=11.0
|
|
python-dotenv>=1.0
|
|
requests>=2.32
|
|
imagehash>=4.3
|
|
PyMySQL>=1.1
|
|
redis>=5.0
|
|
psutil>=6.0
|