mirror of
https://github.com/eolinker/apinto
synced 2025-11-01 12:32:38 +08:00
解决x-forwarded-for 为空的问题
This commit is contained in:
@@ -10,8 +10,8 @@ const (
|
||||
)
|
||||
|
||||
func Register(register eosc.IExtenderDriverRegister) {
|
||||
register.RegisterExtenderDriver(Name, NewFactory())
|
||||
_ = register.RegisterExtenderDriver(Name, NewFactory())
|
||||
}
|
||||
func NewFactory() eosc.IExtenderDriverFactory {
|
||||
return drivers.NewFactory[Config](Create)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
"net/url"
|
||||
)
|
||||
|
||||
const defaultMultipartMemory = 32 << 20 // 32 MB
|
||||
var (
|
||||
_ http_context.IBodyDataWriter = (*BodyRequestHandler)(nil)
|
||||
)
|
||||
@@ -52,8 +51,8 @@ func (b *BodyRequestHandler) MultipartForm() (*multipart.Form, error) {
|
||||
Value: form.Value,
|
||||
File: form.File,
|
||||
}
|
||||
b.resetFile()
|
||||
return form, nil
|
||||
|
||||
return form, b.resetFile()
|
||||
}
|
||||
func (b *BodyRequestHandler) Files() (map[string][]*multipart.FileHeader, error) {
|
||||
form, err := b.MultipartForm()
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package http_context
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
|
||||
"github.com/eolinker/eosc/log"
|
||||
@@ -45,23 +44,16 @@ var (
|
||||
)
|
||||
|
||||
func (r *ProxyRequest) reset(request *fasthttp.Request, remoteAddr string) {
|
||||
//proxyRequest := fasthttp.AcquireRequest()
|
||||
//request.CopyTo(proxyRequest)
|
||||
r.req = request
|
||||
|
||||
r.RequestReader.reset(request, remoteAddr)
|
||||
forwardedFor := r.req.Header.PeekBytes(xforwardedforKey)
|
||||
if len(forwardedFor) > 0 {
|
||||
if i := bytes.IndexByte(forwardedFor, ','); i > 0 {
|
||||
r.realIP = string(forwardedFor[:i])
|
||||
} else {
|
||||
r.realIP = string(forwardedFor)
|
||||
}
|
||||
r.req.Header.Set("x-forwarded-for", fmt.Sprint(string(forwardedFor), ",", r.remoteAddr))
|
||||
r.req.Header.Set("x-forwarded-for", fmt.Sprint(string(forwardedFor), ",", remoteAddr))
|
||||
} else {
|
||||
r.req.Header.Set("x-forwarded-for", r.remoteAddr)
|
||||
r.realIP = r.remoteAddr
|
||||
r.req.Header.Set("x-forwarded-for", remoteAddr)
|
||||
|
||||
}
|
||||
|
||||
r.RequestReader.reset(r.req, remoteAddr)
|
||||
}
|
||||
|
||||
//func NewProxyRequest(request *fasthttp.Request, remoteAddr string) *ProxyRequest {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package http_context
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
|
||||
http_service "github.com/eolinker/eosc/eocontext/http-context"
|
||||
@@ -97,6 +98,17 @@ func (r *RequestReader) reset(req *fasthttp.Request, remoteAddr string) {
|
||||
r.length = length
|
||||
}
|
||||
|
||||
forwardedFor := r.req.Header.PeekBytes(xforwardedforKey)
|
||||
if len(forwardedFor) > 0 {
|
||||
if i := bytes.IndexByte(forwardedFor, ','); i > 0 {
|
||||
r.realIP = string(forwardedFor[:i])
|
||||
} else {
|
||||
r.realIP = string(forwardedFor)
|
||||
}
|
||||
} else {
|
||||
r.realIP = r.remoteAddr
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (r *RequestReader) Request() *fasthttp.Request {
|
||||
|
||||
Reference in New Issue
Block a user