gpt4 book ai didi

clojure - 当 Pedestal 中允许原点时,不存在 'Access-Control-Allow-Origin' header

转载 作者:行者123 更新时间:2023-12-02 10:48:15 30 4
gpt4 key购买 nike

当我尝试从 cljs 应用程序(在 http://localhost:3000 上运行)向我的 Pedestal 服务器(在 http://localhost:8080 上运行)请求资源时,出现以下错误。我想允许来自 http://localhost:3000 的 CORS :

XMLHttpRequest cannot load http://localhost:8080/db/query. 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:3000' is therefore not allowed access.

我正在使用cljs-http发送来自客户端的请求。该请求看起来像这样:

(defn load-server-data
[]
(go
(let [q (<! (http/post "http://localhost:8080/db/query"
{:edn-params {:query '[:find ?rep ?last
:where
[?rep :sales-rep/first-name ?last]]}}))]
(println "q" q))))

/db/query 的路由如下所示:

(defroutes routes
[[["/db"
{:post handlers/db-post}
["/query" {:post handlers/db-query}
^:interceptors [interceptors/edn-interceptor]]]]])

这是 /db/query 的处理程序:

(defn db-query
[req]
(let [edn-params (:edn-params req)
q (:query edn-params)
args (:args edn-params)
q-result (apply d/q q (d/db conn) args)]
{:status 200
:body (pr-str q-result)}))

为了运行服务器,我在 REPL 中执行此函数。

(defn run-dev
"The entry-point for 'lein run-dev'"
[& args]
(println "\nCreating your [DEV] server...")
(-> service/service
(merge {:env :dev
::server/join? false
::server/routes #(deref #'service/routes)
::server/allowed-origins {:creds true :allowed-origins (constantly true)}})
server/default-interceptors
server/dev-interceptors
server/create-server
server/start))

关于 Pedestal 的 CORS 的信息似乎不多。我看过cors example但它似乎可以工作,而我的却不能。是否需要添加另一个拦截器到我的路由或我在这里缺少的某种配置设置?

最佳答案

我已经找到问题所在了。事实证明,抛出了一个错误,但是,它被我的调试器吞噬并隐藏了。只需在我的处理函数周围添加一个 try catch 即可解决问题。

(defn db-query
[req]
(try
(let [edn-params (:edn-params req)
q (:query edn-params)
args (:args edn-params)
q-result (apply d/q q (d/db conn) args)]
{:status 200
:body (pr-str q-result)})
(catch Exception ex
{:status 400
:body "Not authorized"})))

关于clojure - 当 Pedestal 中允许原点时,不存在 'Access-Control-Allow-Origin' header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193946/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com