mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	网站全局设置中增加“XFF中最多地址数”选项
This commit is contained in:
		@@ -1688,7 +1688,29 @@ func (this *HTTPRequest) setForwardHeaders(header http.Header) {
 | 
			
		||||
		if ok && len(forwardedFor) > 0 { // already exists
 | 
			
		||||
			_, hasForwardHeader := this.RawReq.Header["X-Forwarded-For"]
 | 
			
		||||
			if hasForwardHeader {
 | 
			
		||||
				header["X-Forwarded-For"] = []string{strings.Join(forwardedFor, ", ") + ", " + rawRemoteAddr}
 | 
			
		||||
				// 限制转发的XFF中地址数量
 | 
			
		||||
				if this.nodeConfig != nil && this.nodeConfig.GlobalServerConfig != nil && this.nodeConfig.GlobalServerConfig.HTTPAll.XFFMaxAddresses > 0 {
 | 
			
		||||
					var maxForwardedAddresses = this.nodeConfig.GlobalServerConfig.HTTPAll.XFFMaxAddresses
 | 
			
		||||
					if maxForwardedAddresses == 1 {
 | 
			
		||||
						forwardedFor = nil
 | 
			
		||||
					} else {
 | 
			
		||||
						var forwardedAddresses []string
 | 
			
		||||
						for _, forwardedHeader := range forwardedFor {
 | 
			
		||||
							if len(forwardedHeader) > 0 {
 | 
			
		||||
								forwardedAddresses = append(forwardedAddresses, strings.Split(forwardedHeader, ", ")...)
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						if len(forwardedAddresses) >= maxForwardedAddresses {
 | 
			
		||||
							forwardedFor = []string{strings.Join(forwardedAddresses[:maxForwardedAddresses-1], ", ")}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if len(forwardedFor) > 0 {
 | 
			
		||||
					header["X-Forwarded-For"] = []string{strings.Join(forwardedFor, ", ") + ", " + rawRemoteAddr}
 | 
			
		||||
				} else {
 | 
			
		||||
					header["X-Forwarded-For"] = []string{rawRemoteAddr}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			var clientRemoteAddr = this.requestRemoteAddr(true)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user