Remember that assoc-instill does not change the original structure: responseit will always have the same meaning as in (handler request).
(let [response {}]
(assoc-in response [:headers "Access-Control-Allow-Origin"] "*")
(assoc-in response [:headers "Access-Control-Allow-Methods"] "GET,PUT,POST,DELETE,OPTIONS")
(assoc-in response [:headers "Access-Control-Allow-Headers"] "X-Requested-With,Content-Type,Cache-Control"))
==> {:headers {"Access-Control-Allow-Headers" "X-Requested-With,Content-Type,Cache-Control"}}
, . , , assoc-in . :
(let [response {}]
(-> response
(assoc-in [:headers "Access-Control-Allow-Origin"] "*")
(assoc-in [:headers "Access-Control-Allow-Methods"] "GET,PUT,POST,DELETE,OPTIONS")
(assoc-in [:headers "Access-Control-Allow-Headers"] "X-Requested-With,Content-Type,Cache-Control")))
=> {:headers {"Access-Control-Allow-Headers" "X-Requested-With,Content-Type,Cache-Control", "Access-Control-Allow-Methods" "GET,PUT,POST,DELETE,OPTIONS", "Access-Control-Allow-Origin" "*"}}