gpt4 book ai didi

eclipse - 无效的防伪 token

转载 作者:行者123 更新时间:2023-12-04 14:56:48 25 4
gpt4 key购买 nike

当我尝试在使用 Compojure 模板创建的 Clojure Webapp 项目中使用 POST 方法时,我收到“ 无效的防伪 token ”。

我进行了研究,Ring 中间件为来自其他站点的经过身份验证的请求创建了 CSRF(跨站点请求表单) token (使用已经登录的其他人的凭据并访问不允许访问的页面)。

这些标记是默认的,我们需要在我们的 WebApp 周围使用 ring.middleware 的 wrap-params。无法到达任何地方。请帮忙 !!如何摆脱无效的防伪 token .

我的 handler.clj 文件是:

(ns jsonparser-webapp.handler
(:require [compojure.core :refer :all]
[compojure.route :as route]
[jsonparser-webapp.views :as views])
(:use [ring.middleware.params :only [wrap-params]])

(defroutes app-routes
(GET "/"
[]
(views/home-page))
(GET "/goto"
[]
(views/goto))
(POST "/posted"
{params :params}
(views/posted params))
(route/not-found "Not Found"))

(def app
(wrap-params app-routes site-defaults))

我的 views.clj 文件是
(ns jsonparser-webapp.views
(:require [hiccup.page :as hic-p]
[hiccup.form :as hf]))

(defn gen-page-head
[title]
[:head
[:title title]])

(defn home-page
[]
(hic-p/html5
(gen-page-head "Json Parser Home.")
[:h1 "Welcome."]
[:p "Json Web App."]
[:a {:href "http://localhost:3000/goto"} "Goto"]
[:p (hf/form {:action "/posted" :method "POST"}
(hf/text-field "TextInput")
(hf/submit-button "Submit"))]))

(defn goto
[]
(hic-p/html5
(gen-page-head "Goto Page.")
[:h1 "Hi."]
[:p "Go where?"]))

(defn posted
[{:keys [x]}]
(hic-p/html5
(gen-page-head "Posted.")
[:h1 "You posted."]
[:p x]))

在 Eclipse CounterClockwise 中使用 Clojure 的 Compojure 模板创建的项目。

最佳答案

您必须添加 (anti-forgery-field)到您的表单,以便将防伪 token 注入(inject)到 POST 参数中。

像这样:

(ns jsonparser-webapp.views
(:require [hiccup.page :as hic-p]
> [ring.util.anti-forgery :refer [anti-forgery-field]]
[hiccup.form :as hf]))

(defn gen-page-head
[title]
[:head
[:title title]])

(defn home-page
[]
(hic-p/html5
(gen-page-head "Json Parser Home.")
[:h1 "Welcome."]
[:p "Json Web App."]
[:a {:href "http://localhost:3000/goto"} "Goto"]
[:p (hf/form {:action "/posted" :method "POST"}
(hf/text-field "TextInput")
> (anti-forgery-field)
(hf/submit-button "Submit"))]))

关于eclipse - 无效的防伪 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085348/

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