增加CORS自适应跨域

This commit is contained in:
刘祥超
2022-12-29 17:16:21 +08:00
parent e71e80703d
commit b726c8d589
3 changed files with 162 additions and 39 deletions

View File

@@ -182,19 +182,19 @@ func (this *HTTPHeaderPolicyDAO) ComposeHeaderPolicyConfig(tx *dbs.Tx, headerPol
return nil, nil
}
config := &shared.HTTPHeaderPolicy{}
var config = &shared.HTTPHeaderPolicy{}
config.Id = int64(policy.Id)
config.IsOn = policy.IsOn
// SetHeaders
if IsNotNull(policy.SetHeaders) {
refs := []*shared.HTTPHeaderRef{}
var refs = []*shared.HTTPHeaderRef{}
err = json.Unmarshal(policy.SetHeaders, &refs)
if err != nil {
return nil, err
}
if len(refs) > 0 {
resultRefs := []*shared.HTTPHeaderRef{}
var resultRefs = []*shared.HTTPHeaderRef{}
for _, ref := range refs {
headerConfig, err := SharedHTTPHeaderDAO.ComposeHeaderConfig(tx, ref.HeaderId)
if err != nil {
@@ -212,7 +212,7 @@ func (this *HTTPHeaderPolicyDAO) ComposeHeaderPolicyConfig(tx *dbs.Tx, headerPol
// Delete Headers
if IsNotNull(policy.DeleteHeaders) {
headers := []string{}
var headers = []string{}
err = json.Unmarshal(policy.DeleteHeaders, &headers)
if err != nil {
return nil, err
@@ -220,6 +220,16 @@ func (this *HTTPHeaderPolicyDAO) ComposeHeaderPolicyConfig(tx *dbs.Tx, headerPol
config.DeleteHeaders = headers
}
// CORS
if IsNotNull(policy.Cors) {
var corsConfig = &shared.HTTPCORSHeaderConfig{}
err = json.Unmarshal(policy.Cors, corsConfig)
if err != nil {
return nil, err
}
config.CORS = corsConfig
}
// Expires
// TODO
@@ -235,6 +245,46 @@ func (this *HTTPHeaderPolicyDAO) FindHeaderPolicyIdWithHeaderId(tx *dbs.Tx, head
FindInt64Col(0)
}
// UpdateHeaderPolicyCORS 修改CORS
func (this *HTTPHeaderPolicyDAO) UpdateHeaderPolicyCORS(tx *dbs.Tx, headerPolicyId int64, corsConfig *shared.HTTPCORSHeaderConfig) error {
if headerPolicyId <= 0 {
return errors.New("invalid headerId")
}
corsJSON, err := json.Marshal(corsConfig)
if err != nil {
return err
}
err = this.Query(tx).
Pk(headerPolicyId).
Set("cors", corsJSON).
UpdateQuickly()
if err != nil {
return err
}
return this.NotifyUpdate(tx, headerPolicyId)
}
// CheckUserHeaderPolicy 检查用户权限
func (this *HTTPHeaderPolicyDAO) CheckUserHeaderPolicy(tx *dbs.Tx, userId int64, policyId int64) error {
if userId <= 0 || policyId <= 0 {
return ErrNotFound
}
webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithHeaderPolicyId(tx, policyId)
if err != nil {
return err
}
if webId <= 0 {
return ErrNotFound
}
return SharedHTTPWebDAO.CheckUserWeb(tx, userId, webId)
}
// NotifyUpdate 通知更新
func (this *HTTPHeaderPolicyDAO) NotifyUpdate(tx *dbs.Tx, policyId int64) error {
webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithHeaderPolicyId(tx, policyId)