Write the Code. Change the World.

9月 11

返回数据这块已经处理了。现在对跨域进行处理。

# 默认跨域
r.Response.CORSDefault()

允许所有跨域是不安全的。所以得对允许的域名进行跨域,或干脆不跨域。跨域中间件完善。

func (s *sMiddleware) CORS(r *ghttp.Request) {
    corsOptions := r.Response.DefaultCORSOptions()
    corsOptions.AllowDomain = []string{"localhost:5173"}
    corsOptions.AllowOrigin = "http://localhost:5173"
    corsOptions.AllowCredentials = "false"
    corsOptions.AllowMethods = "POST,GET,OPTIONS,PUT,PATCH,DELETE"
    corsOptions.AllowHeaders = "Accept,Content-Type,Referer,User-Agent,Origin,X-Requested-With,X-XSRF-TOKEN,X-CSRF-TOKEN,Authorization,Time"
    r.Response.CORS(corsOptions)

    r.Middleware.Next()
}

这样就够了,主要设置的是允许跨的域,允许跨的请求方式,允许 header 中携带的值以及是否使用 Credentials。主要就这几个的定义。

继续阅读

9月 11

orm with 处理也轻微使用了下。现在来处理输出。处理大输出。抱怨总是包裹一层太久了,抱怨无论啥都返回 http 200 。现在要改变这个状况。

在处理这个问题之前,我们得先找到整个框架的返回是怎么实现的。其实,在之前也想到了用后置中间件来处理。看官方自己也确实是用后置中间件来统一处理返回的。我们建立一个自己的中间件,替换掉官方自己的中间件不就好了。

官方默认中间件。

import  "github.com/gogf/gf/v2/net/ghttp"
ghttp.MiddlewareHandlerResponse

之前也说过一次。gf 中间件的函数都有且仅有一个参数 r *ghttp.Request。只要实现了该方法即可。当然 r.Middleware.Next() 这个方法是要调用的。

在这个方法之前处理的逻辑,叫前置。在这个方法之后处理的逻辑,叫后置。

go 的中间件的思路和 laravel 的也是一样的。估计其他语言也是这个思路。就是前端的 axios 等的拦截器也是有着这方面的思路。

继续阅读