当前位置: 首页 > 科技观察

Go框架Gin是如何实现前端跨域请求的?

时间:2023-03-21 18:09:12 科技观察

1。介绍一下,在前后端分离的项目中,前端在请求服务端提供的接口时,经常会遇到跨域请求的问题。服务端可以通过CORS解决问题。限于篇幅,关于跨域和CORS的详细介绍,读者朋友可以自行查阅相关资料。Go框架Gin官方提供了CORS中间件,可以轻松实现CORS解决跨域问题。在本文中,我们将介绍如何使用Gin中间件。2.如何使用在介绍如何使用Gin中间件CORS之前,我们需要通过命令安装中间件,去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(originstring)bool{返回原点=="https://github.com"},MaxAge:12*time.Hour,}))...阅读上面的代码,使用New函数接收配置项,返回一个自定义的CORS中间件,绑定到路由上。CORS中间件的配置项说明:AllowAllOriginsbool允许所有请求源。AllowOrigins[]string指定允许的请求源列表,如果列表中存在*,则允许所有请求源,默认值为[]。AllowOriginFuncfunc(originstring)bool接收参数origin,函数体中的校验逻辑返回是否允许跨域请求。该配置项的优先级高于AllowOrigins[]string。如果设置了该配置项,AllowOrigins[]string配置项的设置将被忽略。AllowMethods[]string允许的请求方法,默认值为GET、POST、PUT、PATCH、DELETE、HEAD和OPTIONS。AllowHeaders[]string用在前置请求的响应中,表示在实际请求中可以使用哪些HTTP请求头。AllowCredentialsbool表示当请求带有请求凭据时是否响应请求,例如cookie、HTTP身份验证或客户端SSL证书。ExposeHeaders[]string可以在响应中显示的请求标头。MaxAgetime.Duration表示预请求的结果可以缓存多长时间。AllowWildcardbool请求源是否允许通配符,例如http://some-domain/*、https://api.或http://some.*.subdomain.com。AllowBrowserExtensionsbool允许使用常见的浏览器扩展。AllowWebSocketsbool允许使用WebSocket协议。AllowFilesbool允许file://协议。DefaultConfig模式DefaultConfig模式是默认设置一些常用的配置项,我们可以直接使用,也可以在此基础上添加其他我们需要的配置项。funcDefaultConfig()Config{returnConfig{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方法Default方法是基于DefaultConfig方法,将AllowAllOrigins选项设置为true,因为DefaultConfig方法默认不允许任何请求源,所以需要单独将AllowAllOrigins选项设置为true。funcDefault()gin.HandlerFunc{config:=DefaultConfig()config.AllowAllOrigins=truereturnNew(config)}3.总结本文介绍了Go语言框架Gin的中间件CORS,它提供了三种使用方式,我们可以选择根据实际开发需要选择合适的使用方法。有兴趣的读者可以阅读中间件的源码,重点熟悉各个配置项的作用。参考资料:https://github.com/gin-contrib/corshttps://developer.mozilla.org/en-US/docs/Web/HTTP/CORS