新聞中心
1、介紹
在前后端分離的項目中,前端在請求服務端提供的接口時,往往會遇到跨域請求的問題,服務端可以通過 CORS 的方式解決,限于篇幅,關于跨域和 CORS 的詳細介紹,讀者朋友們可以自行查閱相關資料。

五臺ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
Go 框架 Gin 官方提供了 CORS 中間件,可以很方便地實現(xiàn)使用 CORS 解決跨域問題,本文我們介紹該 Gin 中間件的使用方式。
2、使用方式
在介紹 Gin 中間件 CORS 的使用方式之前,我們需要先使用命令安裝該中間件,go get github.com/gin-contrib/cors。
在 Go 框架 Gin 中使用 CORS 中間件非常簡單,只需使用 Use 方法,將中間件綁定到路由中。
CORS 中間件提供三個函數(shù),代表三種使用方式,分別是 New、DefaultConfig 和 Default。
New 方式
其中 New 函數(shù),可以接收 CORS 中間件的配置項,可通過自定義配置項,滿足任意需要跨域的場景。
示例代碼:
...
router.Use(cors.New(cors.Config{
AllowOrigins: []string{"https://foo.com"},
AllowMethods: []string{"PUT", "PATCH"},
AllowHeaders: []string{"Origin"},
ExposeHeaders: []string{"Content-Length"},
AllowCredentials: true,
AllowOriginFunc: func(origin string) bool {
return origin == "https://github.com"
},
MaxAge: 12 * time.Hour,
}))
...
閱讀上面這段代碼,使用 New 函數(shù)接收配置項,返回一個用戶自定義的 CORS 中間件,綁定到路由中。
CORS 中間件的配置項說明:
- AllowAllOrigins bool 允許所有請求源。
- AllowOrigins []string? 指定允許請求源的列表,如果列表中存在 *?,則允許所有請求源,默認值是 []。
- AllowOriginFunc func(origin string) bool? 接收參數(shù) origin?,函數(shù)體中的驗證邏輯返回是否允許跨域請求。該配置項優(yōu)先級高于 AllowOrigins []string?,如果設置該配置項,AllowOrigins []string 配置項的設置被忽略。
- AllowMethods []string? 允許的請求方式,默認值是 GET,POST,PUT,PATCH,DELETE,HEAD?,和 OPTIONS。
- AllowHeaders []string 用在對預請求的響應中,指示實際的請求中可以使用哪些 HTTP 請求頭。
- AllowCredentials bool? 表示請求附帶請求憑據(jù)時是否響應請求,例如 cookie、HTTP authentication 或客戶端 SSL 證書。
- ExposeHeaders []string 可以在響應中顯示的請求頭。
- MaxAge time.Duration 指示預請求的結果能被緩存多久。
- AllowWildcard bool? 添加請求源是否允許使用通配符,例如 http://some-domain/*,https://api.? 或 http://some.*.subdomain.com。
- AllowBrowserExtensions bool 允許使用常用的瀏覽器的擴展模式。
- AllowWebSockets bool 允許使用 WebSocket 協(xié)議。
- AllowFiles bool? 允許使用 file:// 協(xié)議。
DefaultConfig 方式
DefaultConfig 方式就是默認設置一些通用配置項,我們可以直接使用,也可以在此基礎上添加我們需要的其他配置項。
func DefaultConfig() Config {
return Config{
AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"},
AllowHeaders: []string{"Origin", "Content-Length", "Content-Type"},
AllowCredentials: false,
MaxAge: 12 * time.Hour,
}
}閱讀上面這段代碼,我們可以發(fā)現(xiàn) DefaultConfig 方式,默認設置了允許的請求方式、允許的請求頭、附帶請求憑據(jù)時是否響應請求和預請求結果的緩存時間。
Default 方式
Default 方式就是在 DefaultConfig 方式的基礎上,設置 AllowAllOrigins 選項為 true,因為 DefaultConfig 方式默認不允許任意請求源,所以需要單獨設置 AllowAllOrigins 選項為 true。
func Default() gin.HandlerFunc {
config := DefaultConfig()
config.AllowAllOrigins = true
return New(config)
}
3、總結
本文我們介紹了 Go 語言框架 Gin 的中間件 CORS,該中間件提供了三種使用方式,我們可以按照實際開發(fā)需求選擇合適的使用方式。
感興趣的讀者朋友們可以閱讀該中間件的源碼,重點熟悉每個配置項的作用。
參考資料:
??https://github.com/gin-contrib/cors??
??https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS??
分享標題:Go框架Gin怎么實現(xiàn)允許前端跨域請求?
URL鏈接:http://m.5511xx.com/article/coijdih.html


咨詢
建站咨詢
