From 1f40f39181e41245bb28c5677b1f136556006b98 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sat, 16 Oct 2021 12:21:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=89=B9=E6=AE=8A=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=97=A0=E6=B3=95=E7=BC=93=E5=AD=98=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/http_request_page.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/internal/nodes/http_request_page.go b/internal/nodes/http_request_page.go index 4fe1ec1..3c2590f 100644 --- a/internal/nodes/http_request_page.go +++ b/internal/nodes/http_request_page.go @@ -40,13 +40,28 @@ func (this *HTTPRequest) doPage(status int) (shouldStop bool) { return true } + stat, err := fp.Stat() + if err != nil { + logs.Error(err) + msg := "404 could not read page content: '" + page.URL + "'" + + this.writer.WriteHeader(http.StatusNotFound) + _, err := this.writer.Write([]byte(msg)) + if err != nil { + logs.Error(err) + } + return true + } + // 修改状态码 if page.NewStatus > 0 { // 自定义响应Headers this.processResponseHeaders(page.NewStatus) + this.writer.Prepare(stat.Size(), page.NewStatus) this.writer.WriteHeader(page.NewStatus) } else { this.processResponseHeaders(status) + this.writer.Prepare(stat.Size(), status) this.writer.WriteHeader(status) } buf := bytePool1k.Get() @@ -69,17 +84,21 @@ func (this *HTTPRequest) doPage(status int) (shouldStop bool) { return true } else if page.BodyType == shared.BodyTypeHTML { + var content = this.Format(page.Body) + // 修改状态码 if page.NewStatus > 0 { // 自定义响应Headers this.processResponseHeaders(page.NewStatus) + this.writer.Prepare(int64(len(content)), page.NewStatus) this.writer.WriteHeader(page.NewStatus) } else { this.processResponseHeaders(status) + this.writer.Prepare(int64(len(content)), status) this.writer.WriteHeader(status) } - _, err := this.writer.WriteString(this.Format(page.Body)) + _, err := this.writer.WriteString(content) if err != nil { if !this.canIgnore(err) { remotelogs.Warn("HTTP_REQUEST_PAGE", "write to client failed: "+err.Error())