[fix] http Headers支持重复键值

pull/2/head
joestarzxh 4 years ago
parent 3ce83946b3
commit 8750061fc4

@ -18,8 +18,8 @@ type LineReader interface {
// @return firstLine: request的request line或response的status line
// @return headers: request header fileds的键值对
func ReadHttpHeader(r LineReader) (firstLine string, headers map[string]string, err error) {
headers = make(map[string]string)
func ReadHttpHeader(r LineReader) (firstLine string, headers map[string][]string, err error) {
headers = make(map[string][]string)
var line []byte
var isPrefix bool
@ -51,7 +51,7 @@ func ReadHttpHeader(r LineReader) (firstLine string, headers map[string]string,
err = ErrHttpHeader
return
}
headers[strings.Trim(l[0:pos], " ")] = strings.Trim(l[pos+1:], " ")
headers[strings.Trim(l[0:pos], " ")] = append(headers[strings.Trim(l[0:pos], " ")],strings.Trim(l[pos+1:], " "))
}
return
}

@ -23,7 +23,7 @@ type HttpMsgCtx struct {
ReqMethodOrRespVersion string
ReqUriOrRespStatusCode string
ReqVersionOrRespReason string
Headers map[string]string
Headers map[string][]string
Body []byte
}
@ -31,7 +31,7 @@ type HttpReqMsgCtx struct {
Method string
Uri string
Version string
Headers map[string]string
Headers map[string][]string
Body []byte
}
@ -39,7 +39,7 @@ type HttpRespMsgCtx struct {
Version string
StatusCode string
Reason string
Headers map[string]string
Headers map[string][]string
Body []byte
}
@ -85,7 +85,7 @@ func ReadHttpMessage(r HttpReader) (ctx HttpMsgCtx, err error) {
if !ok {
return ctx, nil
}
cl, err := strconv.Atoi(contentLength)
cl, err := strconv.Atoi(contentLength[0])
if err != nil {
return ctx, err
}

Loading…
Cancel
Save