This commit is contained in:
gospider
2025-06-21 16:23:41 +08:00
parent 79aaa7b6e3
commit 48eac55e95
9 changed files with 50 additions and 25 deletions

43
sepc.go
View File

@@ -112,31 +112,46 @@ func (obj *RequestOption) initSpec() error {
return err
}
obj.gospiderSpec = gospiderSpec
if gospiderSpec.H1Spec != nil {
if obj.orderHeaders == nil {
orderData := NewOrderData()
if obj.orderHeaders == nil {
if len(obj.OrderHeaders) > 0 {
obj.orderHeaders = NewOrderData()
var ods [][2]string
if gospiderSpec.H1Spec != nil {
ods = gospiderSpec.H1Spec.OrderHeaders
} else if gospiderSpec.H2Spec != nil {
ods = gospiderSpec.H2Spec.OrderHeaders
}
for _, key := range obj.OrderHeaders {
key = textproto.CanonicalMIMEHeaderKey(key)
var val any
for _, kv := range ods {
if key == kv[0] && slices.Contains(tools.DefaultHeaderKeys, kv[0]) {
val = kv[1]
break
}
}
obj.orderHeaders.Add(key, val)
}
} else if gospiderSpec.H1Spec != nil {
obj.orderHeaders = NewOrderData()
for _, kv := range gospiderSpec.H1Spec.OrderHeaders {
if slices.Contains(tools.DefaultHeaderKeys, kv[0]) {
orderData.Add(kv[0], kv[1])
obj.orderHeaders.Add(kv[0], kv[1])
} else {
orderData.Add(kv[0], nil)
obj.orderHeaders.Add(kv[0], nil)
}
}
obj.orderHeaders = orderData
}
}
if gospiderSpec.H2Spec != nil {
if obj.orderHeaders == nil {
orderData := NewOrderData()
} else if gospiderSpec.H2Spec != nil {
obj.orderHeaders = NewOrderData()
for _, kv := range gospiderSpec.H2Spec.OrderHeaders {
key := textproto.CanonicalMIMEHeaderKey(kv[0])
if slices.Contains(tools.DefaultHeaderKeys, key) {
orderData.Add(key, kv[1])
obj.orderHeaders.Add(key, kv[1])
} else {
orderData.Add(key, nil)
obj.orderHeaders.Add(key, nil)
}
}
obj.orderHeaders = orderData
}
}
return nil