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

Go 框架 Gin 怎么實現允許前端跨域請求?

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

1、介紹

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

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

2、使用方式

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

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

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

New 方式

其中 New 函數,可以接收 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 函數接收配置項,返回一個用戶自定義的 CORS 中間件,綁定到路由中。

CORS 中間件的配置項說明:

  • AllowAllOrigins bool 允許所有請求源。
  • AllowOrigins []string? 指定允許請求源的列表,如果列表中存在 *?,則允許所有請求源,默認值是 []。
  • AllowOriginFunc func(origin string) bool? 接收參數 origin?,函數體中的驗證邏輯返回是否允許跨域請求。該配置項優先級高于 AllowOrigins []string?,如果設置該配置項,AllowOrigins []string 配置項的設置被忽略。
  • AllowMethods []string? 允許的請求方式,默認值是 GET,POST,PUT,PATCH,DELETE,HEAD?,和 OPTIONS。
  • AllowHeaders []string 用在對預請求的響應中,指示實際的請求中可以使用哪些 HTTP 請求頭。
  • AllowCredentials bool? 表示請求附帶請求憑據時是否響應請求,例如 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 協議。
  • AllowFiles bool? 允許使用 file:// 協議。

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,
}
}

閱讀上面這段代碼,我們可以發現 DefaultConfig 方式,默認設置了允許的請求方式、允許的請求頭、附帶請求憑據時是否響應請求和預請求結果的緩存時間。

Default 方式

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

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

3、總結

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

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

參考資料:

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

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

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2017-05-25 09:45:35

2024-01-30 12:08:31

Go框架停止服務

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框架函數

2022-10-17 09:02:49

Go自動驗證數據綁定

2017-08-20 12:49:59

瀏覽器跨域服務器

2011-01-24 13:12:01

AjaxDojojavascript

2024-02-19 07:40:10

2024-03-05 07:55:41

框架GINGo

2021-06-06 13:05:15

前端跨域CORS

2024-12-09 00:00:15

Gin框架中間件

2021-06-10 18:11:02

Cors跨域Web開發Cors

2024-08-28 08:45:22

2018-11-26 14:52:12

Web前端跨域

2021-06-15 07:32:59

Cookie和Sess實現跨域

2023-12-12 09:45:16

前端瀏覽器

2024-05-22 09:54:19

2022-04-29 09:11:14

CORS瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级二级在线观看 | 久久久高清| 欧美视频二区 | 日本又色又爽又黄的大片 | 国产精品99久久久久久www | 亚洲成色777777在线观看影院 | 综合国产第二页 | 国产精品久久久久久久久久久新郎 | 99小视频 | www.欧美| 午夜电影一区二区 | 欧美片网站免费 | 国产日产久久高清欧美一区 | 欧美一级特黄aaa大片在线观看 | 欧美激情免费在线 | 国产日韩一区二区三免费高清 | 久久中文一区二区 | 国产精品福利在线观看 | 国产不卡在线播放 | 激情亚洲 | 亚洲精品视频一区 | 亚洲精品一区二区三区在线观看 | av免费看片| 久久1区 | 亚洲人成人一区二区在线观看 | 亚洲午夜小视频 | 精品成人 | 成人精品鲁一区一区二区 | 精品久久久久久国产 | 天天操天天插 | 午夜精品一区 | 蜜桃传媒一区二区 | 国产精品久久久久久久久久妞妞 | av天天爽 | 日韩在线视频免费观看 | 在线观看www | 亚洲精品一区在线 | 成人h动漫亚洲一区二区 | 精品久久一区二区三区 | 综合久| 在线精品一区二区 |