自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Go 框架 Gin 怎么實現(xiàn)允許前端跨域請求?

開發(fā) 前端
本文我們介紹了 Go 語言框架 Gin 的中間件 CORS,該中間件提供了三種使用方式,我們可以按照實際開發(fā)需求選擇合適的使用方式。

1、介紹

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

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?,如果設(shè)置該配置項,AllowOrigins []string 配置項的設(shè)置被忽略。
  • AllowMethods []string? 允許的請求方式,默認值是 GET,POST,PUT,PATCH,DELETE,HEAD?,和 OPTIONS。
  • AllowHeaders []string 用在對預(yù)請求的響應(yīng)中,指示實際的請求中可以使用哪些 HTTP 請求頭。
  • AllowCredentials bool? 表示請求附帶請求憑據(jù)時是否響應(yīng)請求,例如 cookie、HTTP authentication 或客戶端 SSL 證書。
  • ExposeHeaders []string 可以在響應(yīng)中顯示的請求頭。
  • MaxAge time.Duration 指示預(yù)請求的結(jié)果能被緩存多久。
  • AllowWildcard bool? 添加請求源是否允許使用通配符,例如 http://some-domain/*,https://api.? 或 http://some.*.subdomain.com。
  • AllowBrowserExtensions bool 允許使用常用的瀏覽器的擴展模式。
  • AllowWebSockets bool 允許使用 WebSocket 協(xié)議。
  • AllowFiles bool? 允許使用 file:// 協(xié)議。

DefaultConfig 方式

DefaultConfig 方式就是默認設(shè)置一些通用配置項,我們可以直接使用,也可以在此基礎(chǔ)上添加我們需要的其他配置項。

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 方式,默認設(shè)置了允許的請求方式、允許的請求頭、附帶請求憑據(jù)時是否響應(yīng)請求和預(yù)請求結(jié)果的緩存時間。

Default 方式

Default 方式就是在 DefaultConfig 方式的基礎(chǔ)上,設(shè)置 AllowAllOrigins 選項為 true,因為 DefaultConfig 方式默認不允許任意請求源,所以需要單獨設(shè)置 AllowAllOrigins 選項為 true。

func Default() gin.HandlerFunc {
config := DefaultConfig()
config.AllowAllOrigins = true
return New(config)
}

3、總結(jié)

本文我們介紹了 Go 語言框架 Gin 的中間件 CORS,該中間件提供了三種使用方式,我們可以按照實際開發(fā)需求選擇合適的使用方式。

感興趣的讀者朋友們可以閱讀該中間件的源碼,重點熟悉每個配置項的作用。

參考資料:

??https://github.com/gin-contrib/cors??

??https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS??

責(zé)任編輯:武曉燕 來源: Golang語言開發(fā)棧
相關(guān)推薦

2017-05-25 09:45:35

2024-01-30 12:08:31

Go框架停止服務(wù)

2016-11-01 21:51:03

phpjavascript

2023-03-06 08:37:58

JavaNIO

2024-11-04 08:16:08

Go語言Web 框架

2024-12-16 00:48:39

Gin框架函數(shù)

2022-10-17 09:02:49

Go自動驗證數(shù)據(jù)綁定

2011-01-24 13:12:01

AjaxDojojavascript

2017-08-20 12:49:59

瀏覽器跨域服務(wù)器

2024-03-05 07:55:41

框架GINGo

2024-02-19 07:40:10

2021-06-06 13:05:15

前端跨域CORS

2024-12-09 00:00:15

Gin框架中間件

2024-08-28 08:45:22

2018-11-26 14:52:12

Web前端跨域

2021-06-10 18:11:02

Cors跨域Web開發(fā)Cors

2021-06-15 07:32:59

Cookie和Sess實現(xiàn)跨域

2023-12-12 09:45:16

前端瀏覽器

2022-04-01 12:38:32

cookie代碼面試

2024-05-22 09:54:19

點贊
收藏

51CTO技術(shù)棧公眾號