From 435f8126bede0294e80f67d3ae972bceb430c9e7 Mon Sep 17 00:00:00 2001 From: Fenny Date: Sat, 11 Jan 2020 07:01:22 +0100 Subject: [PATCH] Fix jsonp string builder --- context.go | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/context.go b/context.go index ea28176b..3bf8f3f0 100644 --- a/context.go +++ b/context.go @@ -2,7 +2,6 @@ package fiber import ( "encoding/base64" - "fmt" "mime" "mime/multipart" "path/filepath" @@ -288,28 +287,33 @@ func (ctx *Ctx) Json(v interface{}) error { // Jsonp : func (ctx *Ctx) Jsonp(v interface{}, cb ...string) error { - cbName := "callback" - // Default cbName is "callback" - if len(cb) > 0 { - cbName = cb[0] - } - fmt.Println(cbName[0]) raw, err := jsoniter.Marshal(&v) if err != nil { return err } - // Create buffer with length of json + cbname + ( ); - buf := make([]byte, len(raw)+len(cbName)+3) - count := 0 - count += copy(buf[count:], cbName) - count += copy(buf[count:], "(") - count += copy(buf[count:], raw) - count += copy(buf[count:], ");") + var builder strings.Builder + if len(cb) > 0 { + builder.Write(s2b(cb[0])) + } else { + builder.Write([]byte("callback")) + } + builder.Write([]byte("(")) + builder.Write(raw) + builder.Write([]byte(");")) + + // Create buffer with length of json + cbname + ( ); + // buf := make([]byte, len(raw)+len(cbName)+3) + // + // count := 0 + // count += copy(buf[count:], cbName) + // count += copy(buf[count:], "(") + // count += copy(buf[count:], raw) + // count += copy(buf[count:], ");") ctx.Set("X-Content-Type-Options", "nosniff") - ctx.Set("Content-Type", "text/javascript") - ctx.Fasthttp.Response.SetBodyString(b2s(buf)) + ctx.Set("Content-Type", "application/javascript") + ctx.Fasthttp.Response.SetBodyString(builder.String()) return nil }