8treenet / freedom

Freedom是一个基于六边形架构的框架,可以支撑充血的领域模型范式。
Apache License 2.0
2.37k stars 227 forks source link

关于跨域解决的疑问 #18

Open liulinPro opened 4 years ago

liulinPro commented 4 years ago
    app := freedom.NewApplication()
    app.Iris().Use(func(ctx iris.Context) {
        ctx.Header("Access-Control-Allow-Origin", "*")
        ctx.Header("Access-Control-Allow-Credentials", "true")
        ctx.Header("Access-Control-Allow-Headers", "*")
        ctx.Header("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE")

        if ctx.Method() == "OPTIONS" {
            ctx.StatusCode(http.StatusOK)
            return
        }
        ctx.Next()
    })
    app.Iris().AllowMethods(iris.MethodOptions)

这样做好像没有解决

8treenet commented 3 years ago
package main

func installMiddleware(app freedom.Application) {
    crs := func(ctx freedom.Context) {
        ctx.Header("Access-Control-Allow-Origin", "*")
        ctx.Header("Access-Control-Allow-Credentials", "true")

        if ctx.Method() == "OPTIONS" {
            ctx.Header("Access-Control-Allow-Headers", "Access-Control-Allow-Origin,Content-Type")
            ctx.Header("Access-Control-Max-Age", "86400")
            ctx.StatusCode(204)
            return
        }
        ctx.Next()
    }
    app.InstallMiddleware(crs)
}