mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	HTTP Header中支持设置非标Header
This commit is contained in:
		@@ -157,6 +157,9 @@ func (this *HTTPHeaderPolicyDAO) UpdateDeletingHeaders(tx *dbs.Tx, policyId int6
 | 
				
			|||||||
		return errors.New("invalid policyId")
 | 
							return errors.New("invalid policyId")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if headerNames == nil {
 | 
				
			||||||
 | 
							headerNames = []string{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	namesJSON, err := json.Marshal(headerNames)
 | 
						namesJSON, err := json.Marshal(headerNames)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -164,7 +167,31 @@ func (this *HTTPHeaderPolicyDAO) UpdateDeletingHeaders(tx *dbs.Tx, policyId int6
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	var op = NewHTTPHeaderPolicyOperator()
 | 
						var op = NewHTTPHeaderPolicyOperator()
 | 
				
			||||||
	op.Id = policyId
 | 
						op.Id = policyId
 | 
				
			||||||
	op.DeleteHeaders = string(namesJSON)
 | 
						op.DeleteHeaders = namesJSON
 | 
				
			||||||
 | 
						err = this.Save(tx, op)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return this.NotifyUpdate(tx, policyId)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateNonStandardHeaders 修改非标Headers
 | 
				
			||||||
 | 
					func (this *HTTPHeaderPolicyDAO) UpdateNonStandardHeaders(tx *dbs.Tx, policyId int64, headerNames []string) error {
 | 
				
			||||||
 | 
						if policyId <= 0 {
 | 
				
			||||||
 | 
							return errors.New("invalid policyId")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if headerNames == nil {
 | 
				
			||||||
 | 
							headerNames = []string{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						namesJSON, err := json.Marshal(headerNames)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var op = NewHTTPHeaderPolicyOperator()
 | 
				
			||||||
 | 
						op.Id = policyId
 | 
				
			||||||
 | 
						op.NonStandardHeaders = namesJSON
 | 
				
			||||||
	err = this.Save(tx, op)
 | 
						err = this.Save(tx, op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -220,6 +247,16 @@ func (this *HTTPHeaderPolicyDAO) ComposeHeaderPolicyConfig(tx *dbs.Tx, headerPol
 | 
				
			|||||||
		config.DeleteHeaders = headers
 | 
							config.DeleteHeaders = headers
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Non-Standard Headers
 | 
				
			||||||
 | 
						if IsNotNull(policy.NonStandardHeaders) {
 | 
				
			||||||
 | 
							var headers = []string{}
 | 
				
			||||||
 | 
							err = json.Unmarshal(policy.NonStandardHeaders, &headers)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							config.NonStandardHeaders = headers
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// CORS
 | 
						// CORS
 | 
				
			||||||
	if IsNotNull(policy.Cors) {
 | 
						if IsNotNull(policy.Cors) {
 | 
				
			||||||
		var corsConfig = shared.NewHTTPCORSHeaderConfig()
 | 
							var corsConfig = shared.NewHTTPCORSHeaderConfig()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,7 @@ type HTTPHeaderPolicy struct {
 | 
				
			|||||||
	ReplaceHeaders     dbs.JSON `field:"replaceHeaders"`     // 替换Header内容
 | 
						ReplaceHeaders     dbs.JSON `field:"replaceHeaders"`     // 替换Header内容
 | 
				
			||||||
	Expires            dbs.JSON `field:"expires"`            // Expires单独设置
 | 
						Expires            dbs.JSON `field:"expires"`            // Expires单独设置
 | 
				
			||||||
	DeleteHeaders      dbs.JSON `field:"deleteHeaders"`      // 删除的Headers
 | 
						DeleteHeaders      dbs.JSON `field:"deleteHeaders"`      // 删除的Headers
 | 
				
			||||||
 | 
						NonStandardHeaders dbs.JSON `field:"nonStandardHeaders"` // 非标Headers
 | 
				
			||||||
	Cors               dbs.JSON `field:"cors"`               // CORS配置
 | 
						Cors               dbs.JSON `field:"cors"`               // CORS配置
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,6 +33,7 @@ type HTTPHeaderPolicyOperator struct {
 | 
				
			|||||||
	ReplaceHeaders     any // 替换Header内容
 | 
						ReplaceHeaders     any // 替换Header内容
 | 
				
			||||||
	Expires            any // Expires单独设置
 | 
						Expires            any // Expires单独设置
 | 
				
			||||||
	DeleteHeaders      any // 删除的Headers
 | 
						DeleteHeaders      any // 删除的Headers
 | 
				
			||||||
 | 
						NonStandardHeaders any // 非标Headers
 | 
				
			||||||
	Cors               any // CORS配置
 | 
						Cors               any // CORS配置
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -219,3 +219,28 @@ func (this *HTTPHeaderPolicyService) UpdateHTTPHeaderPolicyCORS(ctx context.Cont
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return this.Success()
 | 
						return this.Success()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateHTTPHeaderPolicyNonStandardHeaders 修改非标的Headers
 | 
				
			||||||
 | 
					func (this *HTTPHeaderPolicyService) UpdateHTTPHeaderPolicyNonStandardHeaders(ctx context.Context, req *pb.UpdateHTTPHeaderPolicyNonStandardHeadersRequest) (*pb.RPCSuccess, error) {
 | 
				
			||||||
 | 
						_, userId, err := this.ValidateAdminAndUser(ctx, true)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 检查权限
 | 
				
			||||||
 | 
						if userId > 0 {
 | 
				
			||||||
 | 
							err = models.SharedHTTPHeaderPolicyDAO.CheckUserHeaderPolicy(tx, userId, req.HttpHeaderPolicyId)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = models.SharedHTTPHeaderPolicyDAO.UpdateNonStandardHeaders(tx, req.HttpHeaderPolicyId, req.HeaderNames)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return this.Success()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61579,7 +61579,7 @@
 | 
				
			|||||||
      "name": "edgeHTTPHeaderPolicies",
 | 
					      "name": "edgeHTTPHeaderPolicies",
 | 
				
			||||||
      "engine": "InnoDB",
 | 
					      "engine": "InnoDB",
 | 
				
			||||||
      "charset": "utf8mb4_general_ci",
 | 
					      "charset": "utf8mb4_general_ci",
 | 
				
			||||||
      "definition": "CREATE TABLE `edgeHTTPHeaderPolicies` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `isOn` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `addHeaders` json DEFAULT NULL COMMENT '添加的Header',\n  `addTrailers` json DEFAULT NULL COMMENT '添加的Trailers',\n  `setHeaders` json DEFAULT NULL COMMENT '设置Header',\n  `replaceHeaders` json DEFAULT NULL COMMENT '替换Header内容',\n  `expires` json DEFAULT NULL COMMENT 'Expires单独设置',\n  `deleteHeaders` json DEFAULT NULL COMMENT '删除的Headers',\n  `cors` json DEFAULT NULL COMMENT 'CORS配置',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Header定义'",
 | 
					      "definition": "CREATE TABLE `edgeHTTPHeaderPolicies` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `isOn` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `addHeaders` json DEFAULT NULL COMMENT '添加的Header',\n  `addTrailers` json DEFAULT NULL COMMENT '添加的Trailers',\n  `setHeaders` json DEFAULT NULL COMMENT '设置Header',\n  `replaceHeaders` json DEFAULT NULL COMMENT '替换Header内容',\n  `expires` json DEFAULT NULL COMMENT 'Expires单独设置',\n  `deleteHeaders` json DEFAULT NULL COMMENT '删除的Headers',\n  `nonStandardHeaders` json DEFAULT NULL COMMENT '非标Headers',\n  `cors` json DEFAULT NULL COMMENT 'CORS配置',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Header定义'",
 | 
				
			||||||
      "fields": [
 | 
					      "fields": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "id",
 | 
					          "name": "id",
 | 
				
			||||||
@@ -61629,6 +61629,10 @@
 | 
				
			|||||||
          "name": "deleteHeaders",
 | 
					          "name": "deleteHeaders",
 | 
				
			||||||
          "definition": "json COMMENT '删除的Headers'"
 | 
					          "definition": "json COMMENT '删除的Headers'"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "name": "nonStandardHeaders",
 | 
				
			||||||
 | 
					          "definition": "json COMMENT '非标Headers'"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "name": "cors",
 | 
					          "name": "cors",
 | 
				
			||||||
          "definition": "json COMMENT 'CORS配置'"
 | 
					          "definition": "json COMMENT 'CORS配置'"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user