成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

1、介紹

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

Go 框架 Gin 官方提供了 CORS 中間件,可以很方便地實(shí)現(xiàn)使用 CORS 解決跨域問(wèn)題,本文我們介紹該 Gin 中間件的使用方式。

2、使用方式

在介紹 Gin 中間件 CORS 的使用方式之前,我們需要先使用命令安裝該中間件,go get github.com/gin-contrib/cors。

在 Go 框架 Gin 中使用 CORS 中間件非常簡(jiǎn)單,只需使用 Use 方法,將中間件綁定到路由中。

CORS 中間件提供三個(gè)函數(shù),代表三種使用方式,分別是 New、DefaultConfig 和 Default。

New 方式

其中 New 函數(shù),可以接收 CORS 中間件的配置項(xiàng),可通過(guò)自定義配置項(xiàng),滿足任意需要跨域的場(chǎng)景。

示例代碼:

...
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ù)接收配置項(xiàng),返回一個(gè)用戶自定義的 CORS 中間件,綁定到路由中。

CORS 中間件的配置項(xiàng)說(shuō)明:

  • AllowAllOrigins bool 允許所有請(qǐng)求源。
  • AllowOrigins []string? 指定允許請(qǐng)求源的列表,如果列表中存在 *?,則允許所有請(qǐng)求源,默認(rèn)值是 []。
  • AllowOriginFunc func(origin string) bool? 接收參數(shù) origin?,函數(shù)體中的驗(yàn)證邏輯返回是否允許跨域請(qǐng)求。該配置項(xiàng)優(yōu)先級(jí)高于 AllowOrigins []string?,如果設(shè)置該配置項(xiàng),AllowOrigins []string 配置項(xiàng)的設(shè)置被忽略。
  • AllowMethods []string? 允許的請(qǐng)求方式,默認(rèn)值是 GET,POST,PUT,PATCH,DELETE,HEAD?,和 OPTIONS。
  • AllowHeaders []string 用在對(duì)預(yù)請(qǐng)求的響應(yīng)中,指示實(shí)際的請(qǐng)求中可以使用哪些 HTTP 請(qǐng)求頭。
  • AllowCredentials bool? 表示請(qǐng)求附帶請(qǐng)求憑據(jù)時(shí)是否響應(yīng)請(qǐng)求,例如 cookie、HTTP authentication 或客戶端 SSL 證書(shū)。
  • ExposeHeaders []string 可以在響應(yīng)中顯示的請(qǐng)求頭。
  • MaxAge time.Duration 指示預(yù)請(qǐng)求的結(jié)果能被緩存多久。
  • AllowWildcard bool? 添加請(qǐng)求源是否允許使用通配符,例如 http://some-domain/*,https://api.? 或 http://some.*.subdomain.com。
  • AllowBrowserExtensions bool 允許使用常用的瀏覽器的擴(kuò)展模式。
  • AllowWebSockets bool 允許使用 WebSocket 協(xié)議。
  • AllowFiles bool? 允許使用 file:// 協(xié)議。

DefaultConfig 方式

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

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

Default 方式

Default 方式就是在 DefaultConfig 方式的基礎(chǔ)上,設(shè)置 AllowAllOrigins 選項(xiàng)為 true,因?yàn)?nbsp;DefaultConfig 方式默認(rèn)不允許任意請(qǐng)求源,所以需要單獨(dú)設(shè)置 AllowAllOrigins 選項(xiàng)為 true。

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

3、總結(jié)

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

感興趣的讀者朋友們可以閱讀該中間件的源碼,重點(diǎn)熟悉每個(gè)配置項(xiàng)的作用。

參考資料:

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

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

責(zé)任編輯:武曉燕 來(lái)源: Golang語(yǔ)言開(kāi)發(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語(yǔ)言Web 框架

2024-12-16 00:48:39

Gin框架函數(shù)

2017-08-20 12:49:59

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

2011-01-24 13:12:01

AjaxDojojavascript

2022-10-17 09:02:49

Go自動(dòng)驗(yàn)證數(shù)據(jù)綁定

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

2021-06-10 18:11:02

Cors跨域Web開(kāi)發(fā)Cors

2018-11-26 14:52:12

Web前端跨域

2021-06-15 07:32:59

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

2024-05-22 09:54:19

2023-12-12 09:45:16

前端瀏覽器

2022-04-29 09:11:14

CORS瀏覽器
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲一区二区三区免费在线观看 | 久久网日本| 久久久久久亚洲精品 | 97成人免费 | 91黄色片免费看 | 日韩乱码一二三 | 亚洲二区在线 | 久久99精品久久久久久 | 综合婷婷 | 日韩视频在线免费观看 | 亚洲免费成人 | 新疆少妇videos高潮 | 亚洲成人99 | 91短视频网址 | 99福利视频 | 精国产品一区二区三区四季综 | 日韩综合在线 | 亚洲精品在线视频 | 九九爱这里只有精品 | 国产欧美视频一区二区三区 | 在线中文字幕视频 | 免费观看的av毛片的网站 | 91精品国产色综合久久 | 国产三区视频在线观看 | av喷水 | 亚洲精品第一 | 亚洲国产黄色av | 国产1区 | 亚洲精品福利视频 | 国产精品久久一区 | 亚洲视频 欧美视频 | 国内精品视频在线观看 | 日本亚洲一区二区 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 日韩精品在线一区 | 精国产品一区二区三区四季综 | 中文字幕综合 | 国产永久免费 | 日韩精品一区二区三区中文在线 | 色香婷婷 | 91福利电影在线观看 |