禁止 - 使用gorilla / csrf和Angular,CSRF令牌无效

时间:2016-04-01 05:31:31

标签: angularjs go csrf

此处的完整代码示例:https://github.com/crosbymichael/not-dockers-ui/commit/15d133324d22e84e3c2839d19b112a96ced4dd66

我用CSRF.Protect()包装了处理程序,Angular正在查找_gorilla_csrf cookie并将其作为X-CSRF-Token标头传回,但我总是收到非无效的令牌错误-GET请求:

Forbidden - CSRF token invalid

我是否尝试错误地使用gorilla / csrf?

编辑:我尝试做的简化示例:

var (
    mux         = http.NewServeMux()
    fileHandler = http.FileServer(http.Dir(""))
    h           http.Handler
    CSRF        = csrf.Protect(
                []byte("32-byte-long-auth-key"),
                csrf.HttpOnly(false),
                csrf.Secure(false),
    )
)
u, err := url.Parse("http://host/api")
if err != nil {
    log.Fatal(err)
}
h = httputil.NewSingleHostReverseProxy(u)

mux.Handle("/dockerapi/", http.StripPrefix("/dockerapi", h))
mux.Handle("/", fileHandler)

handler := CSRF(mux)
if err := http.ListenAndServe(*addr, handler); err != nil {
    log.Fatal(err)
}

我们直接从服务器提供静态文件,API请求传递到外部后端。该应用程序是一个Angular SPA,通常有多个飞行API请求,但通常只有一个非GET请求在任何时候都有效。

0 个答案:

没有答案