我正在尝试将我的简单服务器设置为允许 CORS。我正在从我正在制作的 clojurescript 应用程序发出请求 localhost。
我已经进行了搜索,例如这个答案:How do I add CORS to a compojure-api app? . 但据我所知,在这个答案中,解决方案是在请求中,我想在服务器中找到一个解决方案。
这是我所拥有的:
(ns my-project.handler
(:require [compojure.api.sweet :refer :all]
[ring.util.http-response :refer :all]
[ring.middleware.cors :refer [wrap-cors]]
[punch-card-back.projects-file :as prj]
[schema.core :as s]))
(s/defschema Any
{s/Any s/Any})
(def app
(-> (api
{:swagger
{:ui "/"
:spec "/swagger.json"
:data {:info {:title "My project"
:description "Compojure Api example"}
:tags [{:name "api", :description "some apis"}]}}}
(context "/api" []
:tags ["api"]
(GET "/get_projects" []
:summary "Get all projects"
(ok (prj/get-projects)))
(POST "/save_project" []
:body [request Any]
:summary "Saves project into file"
(ok (prj/save-project request)))))
(wrap-cors :access-control-allow-origin #".*"
:access-control-allow-methods [:get :post])))
我所拥有的是基于我在互联网和ring-cors README 中找到的一些问题。
我得到的错误是在浏览器的控制台中:
Access to XMLHttpRequest at 'http://localhost:31000/api/save_project' from origin 'http://localhost:8280' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
回应是
{:status 0, :success false, :body "", :headers {}, :trace-redirects ["http://localhost:31000/api/save_project" "http://localhost:31000/api/save_project"], :error-code :http-error, :error-text " [0]"}
服务器中似乎没有发生任何事情。在控制台中,没有任何变化,我在函数中输入的内容prj/save-project
也不会触发。
谁能指出我正确的方向?
谢谢!