首页 >后端开发 >Golang >如何在 Go 中高效处理 CORS 预检请求?

如何在 Go 中高效处理 CORS 预检请求?

Susan Sarandon
Susan Sarandon原创
2024-12-19 01:02:12508浏览

How to Efficiently Handle CORS Preflight Requests in Go?

使用 Go 处理 CORS 预检请求

在用 Go 编写的 RESTful 后端服务器中,处理跨域 HTTP 请求需要解决预检 CORS 请求。以下是有效处理它们的方法:

1.手动方法检查:

在net/http中,可以在处理函数中检查请求方法。例如:

func AddResourceHandler(rw http.ResponseWriter, r *http.Request) {
  switch r.Method {
  case "OPTIONS":
    // Preflight handling logic
  case "PUT":
    // Actual request response
  }
}

2。 Gorilla Mux 包:

Gorilla Mux 允许为每个 URL 路径注册单独的预检处理程序。例如:

r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")

3。 HTTP 处理程序包装器:

要解耦逻辑并重用 CORS 处理程序,请考虑包装 REST 处理程序。例如,在 net/http:

func corsHandler(h http.Handler) http.HandlerFunc {
  return func(w http.ResponseWriter, r *http.Request) {
    if r.Method == "OPTIONS" {
      // Preflight handling
    } else {
      h.ServeHTTP(w, r)
    }
  }
}

用法:

http.Handle("/endpoint/", corsHandler(restHandler))

这些方法为在 Go 中处理 CORS 预检请求提供了优雅的解决方案。选择最适合您的应用程序架构的一个。

以上是如何在 Go 中高效处理 CORS 预检请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn