mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-16 13:22:09 +08:00
Merge 7b5e0399987ea10085e499e51b2e1da9b7e13495 into a0acf1df2814fcd828cb2d7128f2f4e2136d3fac
This commit is contained in:
commit
baad57fdfc
12
context.go
12
context.go
@ -5,6 +5,7 @@
|
||||
package gin
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
@ -85,6 +86,9 @@ type Context struct {
|
||||
// SameSite allows a server to define a cookie attribute making it impossible for
|
||||
// the browser to send this cookie along with cross-site requests.
|
||||
sameSite http.SameSite
|
||||
|
||||
// rawData cache and reuse http.request.Body
|
||||
rawData []byte
|
||||
}
|
||||
|
||||
/************************************/
|
||||
@ -528,6 +532,10 @@ func (c *Context) initFormCache() {
|
||||
if c.formCache == nil {
|
||||
c.formCache = make(url.Values)
|
||||
req := c.Request
|
||||
if req.Body != nil {
|
||||
c.rawData, _ = ioutil.ReadAll(req.Body)
|
||||
req.Body = ioutil.NopCloser(bytes.NewReader(c.rawData))
|
||||
}
|
||||
if err := req.ParseMultipartForm(c.engine.MaxMultipartMemory); err != nil {
|
||||
if !errors.Is(err, http.ErrNotMultipart) {
|
||||
debugPrint("error on parse multipart form array: %v", err)
|
||||
@ -872,7 +880,9 @@ func (c *Context) GetHeader(key string) string {
|
||||
|
||||
// GetRawData returns stream data.
|
||||
func (c *Context) GetRawData() ([]byte, error) {
|
||||
return ioutil.ReadAll(c.Request.Body)
|
||||
// return ioutil.ReadAll(c.Request.Body)
|
||||
c.initFormCache()
|
||||
return c.rawData, nil
|
||||
}
|
||||
|
||||
// SetSameSite with cookie
|
||||
|
Loading…
x
Reference in New Issue
Block a user