我正在尝试让/rs/cors包与最新的Buffalo作为前置软件一起工作,根据最近的一篇博客文章(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似乎不会返回,所以我找不到正确的组合来使它们正确地结合在一起,我也没有找到一个有效的示例。
有没有人有可以分享的例子?任何想法都很感谢!
发布于 2017-11-23 10:02:06
我终于弄明白了,所以我会在这里与其他人分享这些信息。这是使用Buffalo v0.10.1和https://github.com/rs/cors项目。我深入研究后发现,我可以使用以下命令设置cors对象(例如使用localhost ):
c := cors.New(cors.Options{
AllowedOrigins: []string{"http://localhost:8080"},
AllowCredentials: true,
})然后通过获取处理程序将其添加到Buffalo实例化中:
app = buffalo.New(buffalo.Options{
Env: ENV,
SessionStore: sessions.Null{},
SessionName: "_creatorhub_session",
PreWares: []buffalo.PreWare{c.Handler},
})这对我很管用。问题在于,很难找到传递给PreWare的Buffalo所需内容的文档,并将其与cors包可以提供的内容进行匹配。
希望这对将来的其他人有所帮助!
https://stackoverflow.com/questions/47428896
复制相似问题