如何解决compojure api +允许CORS
我正在尝试将我的简单服务器设置为允许CORS。我正在从正在制作的clojurescript应用程序发出请求本地主机。
我进行了搜索,例如,以下答案: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自述文件中发现的一些问题。
我得到的错误是在浏览器的控制台中:
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
中添加的打印也不会触发。
有人能指出我正确的方向吗?
谢谢!
解决方法
我知道了。至少是一种方式。
我遇到的问题是我正在使用凭据发出请求。正确删除它们后,我就可以发出请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。