日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Go框架Gin怎么實現(xiàn)允許前端跨域請求?

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