diff --git a/internal/nodes/http_request_error.go b/internal/nodes/http_request_error.go index 847460b..d32cec2 100644 --- a/internal/nodes/http_request_error.go +++ b/internal/nodes/http_request_error.go @@ -25,10 +25,10 @@ const httpStatusPageTemplate = ` ` func (this *HTTPRequest) write404() { - this.writeCode(http.StatusNotFound) + this.writeCode(http.StatusNotFound, "", "") } -func (this *HTTPRequest) writeCode(statusCode int) { +func (this *HTTPRequest) writeCode(statusCode int, enMessage string, zhMessage string) { if this.doPage(statusCode) { return } @@ -42,7 +42,17 @@ func (this *HTTPRequest) writeCode(statusCode int) { case "requestId": return this.requestId case "message": - return "" // 空 + var acceptLanguages = this.RawReq.Header.Get("Accept-Language") + if len(acceptLanguages) > 0 { + var index = strings.Index(acceptLanguages, ",") + if index > 0 { + var firstLanguage = acceptLanguages[:index] + if firstLanguage == "zh-CN" { + return zhMessage + } + } + } + return enMessage } return "${" + varName + "}" }) diff --git a/internal/nodes/http_request_limit.go b/internal/nodes/http_request_limit.go index a4776ed..a6e50e4 100644 --- a/internal/nodes/http_request_limit.go +++ b/internal/nodes/http_request_limit.go @@ -18,7 +18,7 @@ func (this *HTTPRequest) doRequestLimit() (shouldStop bool) { // TODO 处理分片提交的内容 if this.web.RequestLimit.MaxBodyBytes() > 0 && this.RawReq.ContentLength > this.web.RequestLimit.MaxBodyBytes() { - this.writeCode(http.StatusRequestEntityTooLarge) + this.writeCode(http.StatusRequestEntityTooLarge, "", "") return true } @@ -29,7 +29,7 @@ func (this *HTTPRequest) doRequestLimit() (shouldStop bool) { clientConn, ok := requestConn.(ClientConnInterface) if ok && !clientConn.IsBound() { if !clientConn.Bind(this.ReqServer.Id, this.requestRemoteAddr(true), this.web.RequestLimit.MaxConns, this.web.RequestLimit.MaxConnsPerIP) { - this.writeCode(http.StatusTooManyRequests) + this.writeCode(http.StatusTooManyRequests, "", "") this.Close() return true } diff --git a/internal/nodes/http_request_referers.go b/internal/nodes/http_request_referers.go index 143312e..7225877 100644 --- a/internal/nodes/http_request_referers.go +++ b/internal/nodes/http_request_referers.go @@ -19,7 +19,7 @@ func (this *HTTPRequest) doCheckReferers() (shouldStop bool) { } this.tags = append(this.tags, "refererCheck") - this.writer.WriteHeader(http.StatusForbidden) + this.writeCode(http.StatusForbidden, "The referer has been blocked.", "当前访问已被防盗链系统拦截。") return true } @@ -31,14 +31,14 @@ func (this *HTTPRequest) doCheckReferers() (shouldStop bool) { } this.tags = append(this.tags, "refererCheck") - this.writer.WriteHeader(http.StatusForbidden) + this.writeCode(http.StatusForbidden, "The referer has been blocked.", "当前访问已被防盗链系统拦截。") return true } if !this.web.Referers.MatchDomain(this.ReqHost, u.Host) { this.tags = append(this.tags, "refererCheck") - this.writer.WriteHeader(http.StatusForbidden) + this.writeCode(http.StatusForbidden, "The referer has been blocked.", "当前访问已被防盗链系统拦截。") return true } return diff --git a/internal/nodes/http_request_waf.go b/internal/nodes/http_request_waf.go index a4d2aae..d981ba3 100644 --- a/internal/nodes/http_request_waf.go +++ b/internal/nodes/http_request_waf.go @@ -173,7 +173,7 @@ func (this *HTTPRequest) checkWAFRequest(firewallPolicy *firewallconfigs.HTTPFir if countryId > 0 && lists.ContainsInt64(regionConfig.DenyCountryIds, countryId) { this.firewallPolicyId = firewallPolicy.Id - this.writeCode(http.StatusForbidden) + this.writeCode(http.StatusForbidden, "", "") this.writer.Flush() this.writer.Close() @@ -192,7 +192,7 @@ func (this *HTTPRequest) checkWAFRequest(firewallPolicy *firewallconfigs.HTTPFir if provinceId > 0 && lists.ContainsInt64(regionConfig.DenyProvinceIds, provinceId) { this.firewallPolicyId = firewallPolicy.Id - this.writeCode(http.StatusForbidden) + this.writeCode(http.StatusForbidden, "", "") this.writer.Flush() this.writer.Close()