Go Mux 中间件不使用我的 CORS 处理程序

Posted

技术标签:

【中文标题】Go Mux 中间件不使用我的 CORS 处理程序【英文标题】:Go Mux Middlware not using my CORS handler 【发布时间】:2021-09-20 05:49:51 【问题描述】:
mx := mux.NewRouter()

mx.Use(CorsHandler)


sch := mx.NewRoute().Subrouter()
sch.Use(middleware.ValidateSchoolToken)

teacher := mx.NewRoute().Subrouter()
teacher.Use(middleware.ValidateToken)

代码运行时不使用CorsHandler

【问题讨论】:

您好@nator 欢迎来到SO,您能描述一下您遇到的错误吗?另一件事,可以帮助你的问题,是张贴minimal reproducible example 描述您遇到的错误。并解释你的问题 【参考方案1】:

您是否已将http.MethodOptions 添加到您的方法调用中?我在文档中找到了这个示例:

func main() 
    r := mux.NewRouter()

    // IMPORTANT: you must specify an OPTIONS method matcher for the middleware to set CORS headers
    r.HandleFunc("/foo", fooHandler).Methods(http.MethodGet, http.MethodPut, http.MethodPatch, http.MethodOptions)
    r.Use(mux.CORSMethodMiddleware(r))
    
    http.ListenAndServe(":8080", r)

完整文档:https://pkg.go.dev/github.com/gorilla/mux#readme-handling-cors-requests

【讨论】:

以上是关于Go Mux 中间件不使用我的 CORS 处理程序的主要内容,如果未能解决你的问题,请参考以下文章

go -mux,为啥路由没有解析?

没有处理程序的 Mux 中间件

如何将参数传递给我的处理程序

中间件中的 gorilla/mux 下一个处理程序是 nil

Go CORS 发出无响应

Go 每日一库之 gorilla/handlers