Merge pull request #1195 from bettercap/otto_http_getHeaders

Add req.GetHeaders and res.GetHeaders, reduce overhead.
This commit is contained in:
Simone Margaritelli 2025-06-01 13:37:20 +02:00 committed by GitHub
commit 4f51c57dd4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 42 additions and 4 deletions

View file

@ -117,6 +117,7 @@ func (j *JSRequest) CheckIfModifiedAndUpdateHash() bool {
} }
func (j *JSRequest) GetHeader(name, deflt string) string { func (j *JSRequest) GetHeader(name, deflt string) string {
name = strings.ToLower(name)
headers := strings.Split(j.Headers, "\r\n") headers := strings.Split(j.Headers, "\r\n")
for i := 0; i < len(headers); i++ { for i := 0; i < len(headers); i++ {
if headers[i] != "" { if headers[i] != "" {
@ -124,8 +125,7 @@ func (j *JSRequest) GetHeader(name, deflt string) string {
if len(header_parts) != 0 && len(header_parts[0]) == 3 { if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1]) header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2]) header_value := string(header_parts[0][2])
if name == strings.ToLower(header_name) {
if strings.ToLower(name) == strings.ToLower(header_name) {
return header_value return header_value
} }
} }
@ -134,6 +134,25 @@ func (j *JSRequest) GetHeader(name, deflt string) string {
return deflt return deflt
} }
func (j *JSRequest) GetHeaders(name string) []string {
name = strings.ToLower(name)
headers := strings.Split(j.Headers, "\r\n")
header_values := make([]string, 0, len(headers))
for i := 0; i < len(headers); i++ {
if headers[i] != "" {
header_parts := header_regexp.FindAllSubmatch([]byte(headers[i]), 1)
if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2])
if name == strings.ToLower(header_name) {
header_values = append(header_values, header_value)
}
}
}
}
return header_values
}
func (j *JSRequest) SetHeader(name, value string) { func (j *JSRequest) SetHeader(name, value string) {
name = strings.TrimSpace(name) name = strings.TrimSpace(name)
value = strings.TrimSpace(value) value = strings.TrimSpace(value)

View file

@ -98,6 +98,7 @@ func (j *JSResponse) CheckIfModifiedAndUpdateHash() bool {
} }
func (j *JSResponse) GetHeader(name, deflt string) string { func (j *JSResponse) GetHeader(name, deflt string) string {
name = strings.ToLower(name)
headers := strings.Split(j.Headers, "\r\n") headers := strings.Split(j.Headers, "\r\n")
for i := 0; i < len(headers); i++ { for i := 0; i < len(headers); i++ {
if headers[i] != "" { if headers[i] != "" {
@ -105,8 +106,7 @@ func (j *JSResponse) GetHeader(name, deflt string) string {
if len(header_parts) != 0 && len(header_parts[0]) == 3 { if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1]) header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2]) header_value := string(header_parts[0][2])
if name == strings.ToLower(header_name) {
if strings.ToLower(name) == strings.ToLower(header_name) {
return header_value return header_value
} }
} }
@ -115,6 +115,25 @@ func (j *JSResponse) GetHeader(name, deflt string) string {
return deflt return deflt
} }
func (j *JSResponse) GetHeaders(name string) []string {
name = strings.ToLower(name)
headers := strings.Split(j.Headers, "\r\n")
header_values := make([]string, 0, len(headers))
for i := 0; i < len(headers); i++ {
if headers[i] != "" {
header_parts := header_regexp.FindAllSubmatch([]byte(headers[i]), 1)
if len(header_parts) != 0 && len(header_parts[0]) == 3 {
header_name := string(header_parts[0][1])
header_value := string(header_parts[0][2])
if name == strings.ToLower(header_name) {
header_values = append(header_values, header_value)
}
}
}
}
return header_values
}
func (j *JSResponse) SetHeader(name, value string) { func (j *JSResponse) SetHeader(name, value string) {
name = strings.TrimSpace(name) name = strings.TrimSpace(name)
value = strings.TrimSpace(value) value = strings.TrimSpace(value)