使用/ rs / cors作为Buffalo预备件的示例?

时间:2017-11-22 07:18:59

标签: go cors

我正在尝试将/ rs / cors包与最新的Buffalo as Preware一起使用,它应该根据最近的博客文章(https://blog.gobuffalo.io/buffalo-v0-9-4-released-5d2327a4742e)工作,但那里的代码片段没有似乎有道理。如果我生成一个新的buffalo应用程序作为API,我看看添加cors包,我开始:

app = buffalo.New(buffalo.Options{
    Env:          ENV,
    SessionStore: sessions.Null{},
    SessionName:  "_creatorhub_session",
})
// Automatically redirect to SSL
app.Use(ssl.ForceSSL(secure.Options{
    SSLRedirect:     ENV == "production",
    SSLProxyHeaders: map[string]string{"X-Forwarded-Proto": "https"},
}))

// Set the request content type to JSON
app.Use(middleware.SetContentType("application/json"))

我显然应该添加一些“PreWares:[] buffalo.PreWare {},”但它似乎想要一个HandlerFunc,/ rs / cors似乎在正常使用下没有返回,所以我'我没有找到合适的组合来使这些工作在一起,我没有找到一个有效的例子。

有没有人可以分享一个例子?任何想法都赞赏!

1 个答案:

答案 0 :(得分:1)

终于明白了,所以我会在这里为其他人分享这些信息。这是使用Buffalo v0.10.1和https://github.com/rs/cors项目。我挖了进来,发现我可以设置cors对象(例如使用localhost):

    c := cors.New(cors.Options{
        AllowedOrigins:   []string{"http://localhost:8080"},
        AllowCredentials: true,
    })

然后通过将Handler从其中删除来将其添加到Buffalo实例中:

app = buffalo.New(buffalo.Options{
    Env:          ENV,
    SessionStore: sessions.Null{},
    SessionName:  "_creatorhub_session",
    PreWares:     []buffalo.PreWare{c.Handler},
})

这对我有用。问题在于很难找到Buffalo想要传递给PreWare的文档,并将其与cors包提供的内容进行匹配。

希望将来帮助其他人!