chore: 🤖 [frontend-gray]优化关于处理index page 处理逻辑 (#1345)

Co-authored-by: Kent Dong <ch3cho@qq.com>
This commit is contained in:
mamba
2024-09-26 09:16:00 +08:00
committed by GitHub
parent 8293042c25
commit af4e34b7ed
3 changed files with 45 additions and 44 deletions

View File

@@ -73,25 +73,24 @@ static_resources:
], ],
"rewrite": { "rewrite": {
"host": "frontend-gray-cn-shanghai.oss-cn-shanghai-internal.aliyuncs.com", "host": "frontend-gray-cn-shanghai.oss-cn-shanghai-internal.aliyuncs.com",
"notFoundUri": "/mfe/app1/{version}/333.html", "notFoundUri": "/cygtapi/{version}/333.html",
"indexRouting": { "indexRouting": {
"/app1": "/mfe/app1/{version}/index.html", "/app1": "/cygtapi/{version}/index.html",
"/": "/mfe/app1/{version}/index.html" "/": "/cygtapi/{version}/index.html"
}, },
"fileRouting": { "fileRouting": {
"/": "/mfe/app1/{version}", "/": "/cygtapi/{version}",
"/app1": "/mfe/app1/{version}" "/app1": "/cygtapi/{version}"
} }
}, },
"baseDeployment": { "baseDeployment": {
"version": "dev" "version": "base"
}, },
"grayDeployments": [ "grayDeployments": [
{ {
"name": "beta-user", "name": "beta-user",
"version": "0.0.1", "version": "gray",
"enabled": true, "enabled": true
"weight": 50
} }
], ],
"injection": { "injection": {

View File

@@ -108,19 +108,26 @@ func onHttpResponseHeader(ctx wrapper.HttpContext, grayConfig config.GrayConfig,
if !util.IsGrayEnabled(grayConfig) { if !util.IsGrayEnabled(grayConfig) {
return types.ActionContinue return types.ActionContinue
} }
status, err := proxywasm.GetHttpResponseHeader(":status") isPageRequest, ok := ctx.GetContext(config.IsPageRequest).(bool)
contentType, _ := proxywasm.GetHttpResponseHeader("Content-Type") if !ok {
isPageRequest = false // 默认值
}
// response 不处理非首页的请求
if !isPageRequest {
ctx.DontReadResponseBody()
return types.ActionContinue
}
status, err := proxywasm.GetHttpResponseHeader(":status")
if grayConfig.Rewrite != nil && grayConfig.Rewrite.Host != "" { if grayConfig.Rewrite != nil && grayConfig.Rewrite.Host != "" {
// 删除Content-Disposition避免自动下载文件 // 删除Content-Disposition避免自动下载文件
proxywasm.RemoveHttpResponseHeader("Content-Disposition") proxywasm.RemoveHttpResponseHeader("Content-Disposition")
} }
isPageRequest, ok := ctx.GetContext(config.IsPageRequest).(bool) // 删除content-length可能要修改Response返回值
if !ok { proxywasm.RemoveHttpResponseHeader("Content-Length")
isPageRequest = false // 默认值
}
// 处理code为 200的情况
if err != nil || status != "200" { if err != nil || status != "200" {
if status == "404" { if status == "404" {
if grayConfig.Rewrite.NotFound != "" && isPageRequest { if grayConfig.Rewrite.NotFound != "" && isPageRequest {
@@ -143,6 +150,7 @@ func onHttpResponseHeader(ctx wrapper.HttpContext, grayConfig config.GrayConfig,
ctx.BufferResponseBody() ctx.BufferResponseBody()
return types.ActionContinue return types.ActionContinue
} else { } else {
// 直接返回400
ctx.DontReadResponseBody() ctx.DontReadResponseBody()
} }
} }
@@ -150,14 +158,9 @@ func onHttpResponseHeader(ctx wrapper.HttpContext, grayConfig config.GrayConfig,
return types.ActionContinue return types.ActionContinue
} }
// 删除content-length可能要修改Response返回值
proxywasm.RemoveHttpResponseHeader("Content-Length")
if strings.HasPrefix(contentType, "text/html") || isPageRequest {
// 不会进去Streaming 的Body处理 // 不会进去Streaming 的Body处理
ctx.BufferResponseBody() ctx.BufferResponseBody()
proxywasm.ReplaceHttpResponseHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate")
proxywasm.ReplaceHttpResponseHeader("Cache-Control", "no-cache, no-store")
frontendVersion := ctx.GetContext(config.XPreHigressTag).(string) frontendVersion := ctx.GetContext(config.XPreHigressTag).(string)
xUniqueClient := ctx.GetContext(config.XUniqueClientId).(string) xUniqueClient := ctx.GetContext(config.XUniqueClientId).(string)
@@ -169,7 +172,6 @@ func onHttpResponseHeader(ctx wrapper.HttpContext, grayConfig config.GrayConfig,
backendVersion := ctx.GetContext(grayConfig.BackendGrayTag).(string) backendVersion := ctx.GetContext(grayConfig.BackendGrayTag).(string)
proxywasm.AddHttpResponseHeader("Set-Cookie", fmt.Sprintf("%s=%s; Max-Age=%s; Path=/;", grayConfig.BackendGrayTag, backendVersion, grayConfig.UserStickyMaxAge)) proxywasm.AddHttpResponseHeader("Set-Cookie", fmt.Sprintf("%s=%s; Max-Age=%s; Path=/;", grayConfig.BackendGrayTag, backendVersion, grayConfig.UserStickyMaxAge))
} }
}
return types.ActionContinue return types.ActionContinue
} }