我正在创建一个简单的 API,该 API 返回 JSON 数据给用户。出于开发目的,我想启用 CORS,以便我的 react 前端可以调用本地的 API。目前,它会报错:
"Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3001' is therefore not allowed access."
问题:如何使用 ring-cors(或类似的东西)启用 CORS 并发送 JSON 数据?
观察结果:当前的 (app ..) 中,(wrap-cors ...) 不提供跨域头。
我尝试了几种顺序的变化,但都没有成功。例如,(wrap cors ...) 后面跟着 (wrap-defaults ...) 不起作用。
MWE
"Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3001' is therefore not allowed access."
问题:如何使用 ring-cors(或类似的东西)启用 CORS 并发送 JSON 数据?
观察结果:当前的 (app ..) 中,(wrap-cors ...) 不提供跨域头。
我尝试了几种顺序的变化,但都没有成功。例如,(wrap cors ...) 后面跟着 (wrap-defaults ...) 不起作用。
MWE
(ns qitab-api.handler
(:require [compojure.core :refer :all]
[compojure.route :as route]
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
[ring.middleware.json :refer [wrap-json-response wrap-json-body]]
[ring.middleware.cors :refer [wrap-cors]]
[ring.util.response :as r]))
(defroutes app-routes
(GET "/" []
(r/response {:hello "World!!"}))
(route/not-found "Not Found"))
(def app
(-> app-routes
wrap-json-body
wrap-json-response
(wrap-defaults site-defaults)
(wrap-cors :access-control-allow-origin [#".*"] :access-control-allow-
headers [:get])))
P.S. 我查看了几个与CORS和Compojure相关的问题,然而,它们中没有一个处理JSON方面的问题。