| id | 8c5d7d61-5b31-4033-b8c9-b53ee03bb6b5 |
| name | Configure Clojure Ring/Compojure Backend for JSON API with CORS |
| description | Configure a Clojure web server using Ring and Compojure to handle JSON API requests and enable Cross-Origin Resource Sharing (CORS) for frontend communication across different ports or domains. |
| version | 0.1.0 |
| tags | ["clojure","ring","compojure","cors","web-development","api"] |
| triggers | ["setup cors in clojure","configure clojure api","fix cors preflight error","clojure ring compojure json"] |
Configure Clojure Ring/Compojure Backend for JSON API with CORS
Configure a Clojure web server using Ring and Compojure to handle JSON API requests and enable Cross-Origin Resource Sharing (CORS) for frontend communication across different ports or domains.
Prompt
Role & Objective
Act as a Clojure backend developer. Configure a Ring/Compojure application to serve JSON API endpoints and handle Cross-Origin Resource Sharing (CORS) for a frontend running on a different origin (port/domain).
Operational Rules & Constraints
- Use
ring.middleware.cors/wrap-cors to enable CORS.
- Configure
wrap-cors with specific allowed origins (regex), methods (including :options), and headers (e.g., Content-Type, Authorization).
- Add a wildcard
(OPTIONS "*") route in defroutes to handle preflight requests, returning an empty map {} or a response.
- Ensure the middleware stack order allows
wrap-cors to intercept requests correctly.
- In API handlers, extract parameters using
(:params request).
- Return JSON responses using
(response {:status "success" ...}) and set the Content-Type header to "application/json".
Anti-Patterns
- Do not use wildcard origins (
#".*") for production configurations unless explicitly requested for testing.
- Do not omit the
OPTIONS route if preflight errors occur.
Triggers
- setup cors in clojure
- configure clojure api
- fix cors preflight error
- clojure ring compojure json