mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-07 15:20:25 +08:00
增加CORS自适应跨域
This commit is contained in:
@@ -89,6 +89,19 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DNS信息
|
||||||
|
var fullDomainName = ""
|
||||||
|
if len(cluster.DnsName) > 0 && cluster.DnsDomainId > 0 {
|
||||||
|
domainResp, err := this.RPC().DNSDomainRPC().FindBasicDNSDomain(this.AdminContext(), &pb.FindBasicDNSDomainRequest{DnsDomainId: cluster.DnsDomainId})
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if domainResp.DnsDomain != nil {
|
||||||
|
fullDomainName = cluster.DnsName + "." + domainResp.DnsDomain.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.Data["cluster"] = maps.Map{
|
this.Data["cluster"] = maps.Map{
|
||||||
"id": cluster.Id,
|
"id": cluster.Id,
|
||||||
"name": cluster.Name,
|
"name": cluster.Name,
|
||||||
@@ -100,6 +113,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
"autoRemoteStart": cluster.AutoRemoteStart,
|
"autoRemoteStart": cluster.AutoRemoteStart,
|
||||||
"autoInstallNftables": cluster.AutoInstallNftables,
|
"autoInstallNftables": cluster.AutoInstallNftables,
|
||||||
"sshParams": sshParams,
|
"sshParams": sshParams,
|
||||||
|
"domainName": fullDomainName,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 默认值
|
// 默认值
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
headerPolicyId := createHeaderPolicyResp.HeaderPolicyId
|
headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId
|
||||||
ref := &shared.HTTPHeaderPolicyRef{
|
ref := &shared.HTTPHeaderPolicyRef{
|
||||||
IsPrior: false,
|
IsPrior: false,
|
||||||
IsOn: true,
|
IsOn: true,
|
||||||
@@ -70,7 +70,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
headerPolicyId := createHeaderPolicyResp.HeaderPolicyId
|
headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId
|
||||||
ref := &shared.HTTPHeaderPolicyRef{
|
ref := &shared.HTTPHeaderPolicyRef{
|
||||||
IsPrior: false,
|
IsPrior: false,
|
||||||
IsOn: true,
|
IsOn: true,
|
||||||
|
|||||||
@@ -40,13 +40,13 @@ func (this *CreateDeletePopupAction) RunPost(params struct {
|
|||||||
Field("name", params.Name).
|
Field("name", params.Name).
|
||||||
Require("名称不能为空")
|
Require("名称不能为空")
|
||||||
|
|
||||||
policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HeaderPolicyId: params.HeaderPolicyId})
|
policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
policyConfig := &shared.HTTPHeaderPolicy{}
|
policyConfig := &shared.HTTPHeaderPolicy{}
|
||||||
err = json.Unmarshal(policyConfigResp.HeaderPolicyJSON, policyConfig)
|
err = json.Unmarshal(policyConfigResp.HttpHeaderPolicyJSON, policyConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
@@ -55,7 +55,7 @@ func (this *CreateDeletePopupAction) RunPost(params struct {
|
|||||||
deleteHeaders := policyConfig.DeleteHeaders
|
deleteHeaders := policyConfig.DeleteHeaders
|
||||||
deleteHeaders = append(deleteHeaders, params.Name)
|
deleteHeaders = append(deleteHeaders, params.Name)
|
||||||
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyDeletingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyDeletingHeadersRequest{
|
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyDeletingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyDeletingHeadersRequest{
|
||||||
HeaderPolicyId: params.HeaderPolicyId,
|
HttpHeaderPolicyId: params.HeaderPolicyId,
|
||||||
HeaderNames: deleteHeaders,
|
HeaderNames: deleteHeaders,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -52,13 +52,13 @@ func (this *CreateSetPopupAction) RunPost(params struct {
|
|||||||
Field("name", params.Name).
|
Field("name", params.Name).
|
||||||
Require("请输入Header名称")
|
Require("请输入Header名称")
|
||||||
|
|
||||||
configResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HeaderPolicyId: params.HeaderPolicyId})
|
configResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
policyConfig := &shared.HTTPHeaderPolicy{}
|
policyConfig := &shared.HTTPHeaderPolicy{}
|
||||||
err = json.Unmarshal(configResp.HeaderPolicyJSON, policyConfig)
|
err = json.Unmarshal(configResp.HttpHeaderPolicyJSON, policyConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
@@ -135,7 +135,7 @@ func (this *CreateSetPopupAction) RunPost(params struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicySettingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicySettingHeadersRequest{
|
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicySettingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicySettingHeadersRequest{
|
||||||
HeaderPolicyId: params.HeaderPolicyId,
|
HttpHeaderPolicyId: params.HeaderPolicyId,
|
||||||
HeadersJSON: refsJSON,
|
HeadersJSON: refsJSON,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -21,14 +21,14 @@ func (this *DeleteAction) RunPost(params struct {
|
|||||||
defer this.CreateLog(oplogs.LevelInfo, "删除请求Header,HeaderPolicyId:%d, HeaderId:%d", params.HeaderPolicyId, params.HeaderId)
|
defer this.CreateLog(oplogs.LevelInfo, "删除请求Header,HeaderPolicyId:%d, HeaderId:%d", params.HeaderPolicyId, params.HeaderId)
|
||||||
|
|
||||||
policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{
|
policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{
|
||||||
HeaderPolicyId: params.HeaderPolicyId,
|
HttpHeaderPolicyId: params.HeaderPolicyId,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
policyConfig := &shared.HTTPHeaderPolicy{}
|
policyConfig := &shared.HTTPHeaderPolicy{}
|
||||||
err = json.Unmarshal(policyConfigResp.HeaderPolicyJSON, policyConfig)
|
err = json.Unmarshal(policyConfigResp.HttpHeaderPolicyJSON, policyConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
@@ -48,7 +48,7 @@ func (this *DeleteAction) RunPost(params struct {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicySettingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicySettingHeadersRequest{
|
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicySettingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicySettingHeadersRequest{
|
||||||
HeaderPolicyId: params.HeaderPolicyId,
|
HttpHeaderPolicyId: params.HeaderPolicyId,
|
||||||
HeadersJSON: resultJSON,
|
HeadersJSON: resultJSON,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ func (this *DeleteDeletingHeaderAction) RunPost(params struct {
|
|||||||
// 日志
|
// 日志
|
||||||
defer this.CreateLog(oplogs.LevelInfo, "删除需要删除的请求Header,HeaderPolicyId:%d, HeaderName:%s", params.HeaderPolicyId, params.HeaderName)
|
defer this.CreateLog(oplogs.LevelInfo, "删除需要删除的请求Header,HeaderPolicyId:%d, HeaderName:%s", params.HeaderPolicyId, params.HeaderName)
|
||||||
|
|
||||||
policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HeaderPolicyId: params.HeaderPolicyId})
|
policyConfigResp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
policyConfigJSON := policyConfigResp.HeaderPolicyJSON
|
policyConfigJSON := policyConfigResp.HttpHeaderPolicyJSON
|
||||||
policyConfig := &shared.HTTPHeaderPolicy{}
|
policyConfig := &shared.HTTPHeaderPolicy{}
|
||||||
err = json.Unmarshal(policyConfigJSON, policyConfig)
|
err = json.Unmarshal(policyConfigJSON, policyConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -40,7 +40,7 @@ func (this *DeleteDeletingHeaderAction) RunPost(params struct {
|
|||||||
headerNames = append(headerNames, h)
|
headerNames = append(headerNames, h)
|
||||||
}
|
}
|
||||||
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyDeletingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyDeletingHeadersRequest{
|
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyDeletingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyDeletingHeadersRequest{
|
||||||
HeaderPolicyId: params.HeaderPolicyId,
|
HttpHeaderPolicyId: params.HeaderPolicyId,
|
||||||
HeaderNames: headerNames,
|
HeaderNames: headerNames,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
headerPolicyId := createHeaderPolicyResp.HeaderPolicyId
|
var headerPolicyId = createHeaderPolicyResp.HttpHeaderPolicyId
|
||||||
ref := &shared.HTTPHeaderPolicyRef{
|
ref := &shared.HTTPHeaderPolicyRef{
|
||||||
IsPrior: false,
|
IsPrior: false,
|
||||||
IsOn: true,
|
IsOn: true,
|
||||||
@@ -74,7 +74,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
headerPolicyId := createHeaderPolicyResp.HeaderPolicyId
|
headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId
|
||||||
ref := &shared.HTTPHeaderPolicyRef{
|
ref := &shared.HTTPHeaderPolicyRef{
|
||||||
IsPrior: false,
|
IsPrior: false,
|
||||||
IsOn: true,
|
IsOn: true,
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ func init() {
|
|||||||
GetPost("/createDeletePopup", new(CreateDeletePopupAction)).
|
GetPost("/createDeletePopup", new(CreateDeletePopupAction)).
|
||||||
Post("/deleteDeletingHeader", new(DeleteDeletingHeaderAction)).
|
Post("/deleteDeletingHeader", new(DeleteDeletingHeaderAction)).
|
||||||
Post("/delete", new(DeleteAction)).
|
Post("/delete", new(DeleteAction)).
|
||||||
|
GetPost("/updateCORSPopup", new(UpdateCORSPopupAction)).
|
||||||
EndAll()
|
EndAll()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||||
|
|
||||||
|
package headers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
||||||
|
"github.com/iwind/TeaGo/actions"
|
||||||
|
)
|
||||||
|
|
||||||
|
type UpdateCORSPopupAction struct {
|
||||||
|
actionutils.ParentAction
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *UpdateCORSPopupAction) Init() {
|
||||||
|
this.Nav("", "", "")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *UpdateCORSPopupAction) RunGet(params struct {
|
||||||
|
HeaderPolicyId int64
|
||||||
|
}) {
|
||||||
|
this.Data["headerPolicyId"] = params.HeaderPolicyId
|
||||||
|
|
||||||
|
resp, err := this.RPC().HTTPHeaderPolicyRPC().FindEnabledHTTPHeaderPolicyConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderPolicyConfigRequest{HttpHeaderPolicyId: params.HeaderPolicyId})
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var headerPolicyJSON = resp.HttpHeaderPolicyJSON
|
||||||
|
var headerPolicy = &shared.HTTPHeaderPolicy{}
|
||||||
|
if len(headerPolicyJSON) > 0 {
|
||||||
|
err = json.Unmarshal(headerPolicyJSON, headerPolicy)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.Data["cors"] = headerPolicy.CORS
|
||||||
|
|
||||||
|
this.Show()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *UpdateCORSPopupAction) RunPost(params struct {
|
||||||
|
HeaderPolicyId int64
|
||||||
|
CorsJSON []byte
|
||||||
|
|
||||||
|
Must *actions.Must
|
||||||
|
CSRF *actionutils.CSRF
|
||||||
|
}) {
|
||||||
|
var config = &shared.HTTPCORSHeaderConfig{}
|
||||||
|
err := json.Unmarshal(params.CorsJSON, config)
|
||||||
|
if err != nil {
|
||||||
|
this.Fail("配置校验失败:" + err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = config.Init()
|
||||||
|
if err != nil {
|
||||||
|
this.Fail("配置校验失败:" + err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyCORS(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyCORSRequest{
|
||||||
|
HttpHeaderPolicyId: params.HeaderPolicyId,
|
||||||
|
CorsJSON: params.CorsJSON,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.Success()
|
||||||
|
}
|
||||||
@@ -36,7 +36,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
headerPolicyId := createHeaderPolicyResp.HeaderPolicyId
|
headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId
|
||||||
ref := &shared.HTTPHeaderPolicyRef{
|
ref := &shared.HTTPHeaderPolicyRef{
|
||||||
IsPrior: false,
|
IsPrior: false,
|
||||||
IsOn: true,
|
IsOn: true,
|
||||||
@@ -59,7 +59,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
headerPolicyId := createHeaderPolicyResp.HeaderPolicyId
|
headerPolicyId := createHeaderPolicyResp.HttpHeaderPolicyId
|
||||||
ref := &shared.HTTPHeaderPolicyRef{
|
ref := &shared.HTTPHeaderPolicyRef{
|
||||||
IsPrior: false,
|
IsPrior: false,
|
||||||
IsOn: true,
|
IsOn: true,
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
Vue.component("http-cors-header-config-box", {
|
||||||
|
props: ["value"],
|
||||||
|
data: function () {
|
||||||
|
let config = this.value
|
||||||
|
if (config == null) {
|
||||||
|
config = {
|
||||||
|
isOn: false,
|
||||||
|
allowMethods: [],
|
||||||
|
allowOrigin: "",
|
||||||
|
allowCredentials: false,
|
||||||
|
exposeHeaders: [],
|
||||||
|
maxAge: 0,
|
||||||
|
requestHeaders: [],
|
||||||
|
requestMethod: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
config: config
|
||||||
|
}
|
||||||
|
},
|
||||||
|
template: `<div>
|
||||||
|
<input type="hidden" name="corsJSON" :value="JSON.stringify(config)"/>
|
||||||
|
<table class="ui table definition selectable">
|
||||||
|
<tr>
|
||||||
|
<td class="title">启用CORS自适应跨域</td>
|
||||||
|
<td>
|
||||||
|
<checkbox v-model="config.isOn"></checkbox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="margin"></div>
|
||||||
|
</div>`
|
||||||
|
})
|
||||||
@@ -28,7 +28,7 @@ Vue.component("http-header-assistant", {
|
|||||||
}
|
}
|
||||||
this.matchedHeaders = this.allHeaders.filter(function (header) {
|
this.matchedHeaders = this.allHeaders.filter(function (header) {
|
||||||
return teaweb.match(header, v)
|
return teaweb.match(header, v)
|
||||||
}).slice(0, 5)
|
}).slice(0, 10)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -38,7 +38,7 @@ Vue.component("http-header-assistant", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
template: `<span v-if="selectedHeaderName.length == 0">
|
template: `<span v-if="selectedHeaderName.length == 0">
|
||||||
<a href="" v-for="header in matchedHeaders" class="ui label basic tiny blue" style="font-weight: normal" @click.prevent="select(header)">{{header}}</a>
|
<a href="" v-for="header in matchedHeaders" class="ui label basic tiny blue" style="font-weight: normal; margin-bottom: 0.3em" @click.prevent="select(header)">{{header}}</a>
|
||||||
<span v-if="matchedHeaders.length > 0"> </span>
|
<span v-if="matchedHeaders.length > 0"> </span>
|
||||||
</span>`
|
</span>`
|
||||||
})
|
})
|
||||||
@@ -54,6 +54,13 @@ Vue.component("http-header-policy-box", {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let responseCORS = {
|
||||||
|
isOn: false
|
||||||
|
}
|
||||||
|
if (responsePolicy.cors != null) {
|
||||||
|
responseCORS = responsePolicy.cors
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
type: type,
|
type: type,
|
||||||
typeName: (type == "request") ? "请求" : "响应",
|
typeName: (type == "request") ? "请求" : "响应",
|
||||||
@@ -62,7 +69,8 @@ Vue.component("http-header-policy-box", {
|
|||||||
requestSettingHeaders: requestSettingHeaders,
|
requestSettingHeaders: requestSettingHeaders,
|
||||||
requestDeletingHeaders: requestDeletingHeaders,
|
requestDeletingHeaders: requestDeletingHeaders,
|
||||||
responseSettingHeaders: responseSettingHeaders,
|
responseSettingHeaders: responseSettingHeaders,
|
||||||
responseDeletingHeaders: responseDeletingHeaders
|
responseDeletingHeaders: responseDeletingHeaders,
|
||||||
|
responseCORS: responseCORS
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -114,6 +122,13 @@ Vue.component("http-header-policy-box", {
|
|||||||
.refresh()
|
.refresh()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
updateCORS: function (policyId) {
|
||||||
|
teaweb.popup("/servers/server/settings/headers/updateCORSPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&type=" + this.type, {
|
||||||
|
callback: function () {
|
||||||
|
teaweb.successRefresh("保存成功")
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
template: `<div>
|
template: `<div>
|
||||||
@@ -141,7 +156,7 @@ Vue.component("http-header-policy-box", {
|
|||||||
<warning-message>由于已经在当前<a :href="vGroupSettingUrl + '#request'">服务分组</a>中进行了对应的配置,在这里的配置将不会生效。</warning-message>
|
<warning-message>由于已经在当前<a :href="vGroupSettingUrl + '#request'">服务分组</a>中进行了对应的配置,在这里的配置将不会生效。</warning-message>
|
||||||
</div>
|
</div>
|
||||||
<div :class="{'opacity-mask': vHasGroupRequestConfig}">
|
<div :class="{'opacity-mask': vHasGroupRequestConfig}">
|
||||||
<h3>设置请求Header <a href="" @click.prevent="addSettingHeader(vRequestHeaderPolicy.id)">[添加新Header]</a></h3>
|
<h4>设置请求Header <a href="" @click.prevent="addSettingHeader(vRequestHeaderPolicy.id)">[添加新Header]</a></h4>
|
||||||
<p class="comment" v-if="requestSettingHeaders.length == 0">暂时还没有Header。</p>
|
<p class="comment" v-if="requestSettingHeaders.length == 0">暂时还没有Header。</p>
|
||||||
<table class="ui table selectable celled" v-if="requestSettingHeaders.length > 0">
|
<table class="ui table selectable celled" v-if="requestSettingHeaders.length > 0">
|
||||||
<thead>
|
<thead>
|
||||||
@@ -151,7 +166,8 @@ Vue.component("http-header-policy-box", {
|
|||||||
<th class="two op">操作</th>
|
<th class="two op">操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tr v-for="header in requestSettingHeaders">
|
<tbody v-for="header in requestSettingHeaders">
|
||||||
|
<tr>
|
||||||
<td class="five wide">
|
<td class="five wide">
|
||||||
{{header.name}}
|
{{header.name}}
|
||||||
<div>
|
<div>
|
||||||
@@ -166,12 +182,14 @@ Vue.component("http-header-policy-box", {
|
|||||||
<td>{{header.value}}</td>
|
<td>{{header.value}}</td>
|
||||||
<td><a href="" @click.prevent="updateSettingPopup(vRequestHeaderPolicy.id, header.id)">修改</a> <a href="" @click.prevent="deleteHeader(vRequestHeaderPolicy.id, 'setHeader', header.id)">删除</a> </td>
|
<td><a href="" @click.prevent="updateSettingPopup(vRequestHeaderPolicy.id, header.id)">修改</a> <a href="" @click.prevent="deleteHeader(vRequestHeaderPolicy.id, 'setHeader', header.id)">删除</a> </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<h3>删除请求Header</h3>
|
<h4>删除请求Header</h4>
|
||||||
<p class="comment">这里可以设置需要从请求中删除的Header。</p>
|
<p class="comment">这里可以设置需要从请求中删除的Header。</p>
|
||||||
|
|
||||||
<table class="ui table definition selectable">
|
<table class="ui table definition selectable">
|
||||||
|
<tr>
|
||||||
<td class="title">需要删除的Header</td>
|
<td class="title">需要删除的Header</td>
|
||||||
<td>
|
<td>
|
||||||
<div v-if="requestDeletingHeaders.length > 0">
|
<div v-if="requestDeletingHeaders.length > 0">
|
||||||
@@ -180,6 +198,7 @@ Vue.component("http-header-policy-box", {
|
|||||||
</div>
|
</div>
|
||||||
<button class="ui button small" type="button" @click.prevent="addDeletingHeader(vRequestHeaderPolicy.id, 'request')">+</button>
|
<button class="ui button small" type="button" @click.prevent="addDeletingHeader(vRequestHeaderPolicy.id, 'request')">+</button>
|
||||||
</td>
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -199,7 +218,7 @@ Vue.component("http-header-policy-box", {
|
|||||||
<warning-message>由于已经在当前<a :href="vGroupSettingUrl + '#response'">服务分组</a>中进行了对应的配置,在这里的配置将不会生效。</warning-message>
|
<warning-message>由于已经在当前<a :href="vGroupSettingUrl + '#response'">服务分组</a>中进行了对应的配置,在这里的配置将不会生效。</warning-message>
|
||||||
</div>
|
</div>
|
||||||
<div :class="{'opacity-mask': vHasGroupResponseConfig}">
|
<div :class="{'opacity-mask': vHasGroupResponseConfig}">
|
||||||
<h3>设置响应Header <a href="" @click.prevent="addSettingHeader(vResponseHeaderPolicy.id)">[添加新Header]</a></h3>
|
<h4>设置响应Header <a href="" @click.prevent="addSettingHeader(vResponseHeaderPolicy.id)">[添加新Header]</a></h4>
|
||||||
<p class="comment" style="margin-top: 0; padding-top: 0">将会覆盖已有的同名Header。</p>
|
<p class="comment" style="margin-top: 0; padding-top: 0">将会覆盖已有的同名Header。</p>
|
||||||
<p class="comment" v-if="responseSettingHeaders.length == 0">暂时还没有Header。</p>
|
<p class="comment" v-if="responseSettingHeaders.length == 0">暂时还没有Header。</p>
|
||||||
<table class="ui table selectable celled" v-if="responseSettingHeaders.length > 0">
|
<table class="ui table selectable celled" v-if="responseSettingHeaders.length > 0">
|
||||||
@@ -210,7 +229,8 @@ Vue.component("http-header-policy-box", {
|
|||||||
<th class="two op">操作</th>
|
<th class="two op">操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tr v-for="header in responseSettingHeaders">
|
<tbody v-for="header in responseSettingHeaders">
|
||||||
|
<tr>
|
||||||
<td class="five wide">
|
<td class="five wide">
|
||||||
{{header.name}}
|
{{header.name}}
|
||||||
<div>
|
<div>
|
||||||
@@ -225,12 +245,14 @@ Vue.component("http-header-policy-box", {
|
|||||||
<td>{{header.value}}</td>
|
<td>{{header.value}}</td>
|
||||||
<td><a href="" @click.prevent="updateSettingPopup(vResponseHeaderPolicy.id, header.id)">修改</a> <a href="" @click.prevent="deleteHeader(vResponseHeaderPolicy.id, 'setHeader', header.id)">删除</a> </td>
|
<td><a href="" @click.prevent="updateSettingPopup(vResponseHeaderPolicy.id, header.id)">修改</a> <a href="" @click.prevent="deleteHeader(vResponseHeaderPolicy.id, 'setHeader', header.id)">删除</a> </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<h3>删除响应Header</h3>
|
<h4>删除响应Header</h4>
|
||||||
<p class="comment">这里可以设置需要从响应中删除的Header。</p>
|
<p class="comment">这里可以设置需要从响应中删除的Header。</p>
|
||||||
|
|
||||||
<table class="ui table definition selectable">
|
<table class="ui table definition selectable">
|
||||||
|
<tr>
|
||||||
<td class="title">需要删除的Header</td>
|
<td class="title">需要删除的Header</td>
|
||||||
<td>
|
<td>
|
||||||
<div v-if="responseDeletingHeaders.length > 0">
|
<div v-if="responseDeletingHeaders.length > 0">
|
||||||
@@ -239,6 +261,18 @@ Vue.component("http-header-policy-box", {
|
|||||||
</div>
|
</div>
|
||||||
<button class="ui button small" type="button" @click.prevent="addDeletingHeader(vResponseHeaderPolicy.id, 'response')">+</button>
|
<button class="ui button small" type="button" @click.prevent="addDeletingHeader(vResponseHeaderPolicy.id, 'response')">+</button>
|
||||||
</td>
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h4>CORS跨域设置</h4>
|
||||||
|
|
||||||
|
<table class="ui table definition selectable">
|
||||||
|
<tr>
|
||||||
|
<td class="title">CORS自适应跨域</td>
|
||||||
|
<td>
|
||||||
|
<span v-if="responseCORS.isOn" class="green">已启用</span><span class="disabled" v-else="">未启用</span> <a href="" @click.prevent="updateCORS(vResponseHeaderPolicy.id)">[修改]</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,6 +10,12 @@
|
|||||||
<td class="title">集群名称 *</td>
|
<td class="title">集群名称 *</td>
|
||||||
<td><input type="text" name="name" maxlength="50" ref="focus" v-model="cluster.name"/></td>
|
<td><input type="text" name="name" maxlength="50" ref="focus" v-model="cluster.name"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr v-if="cluster.domainName.length > 0">
|
||||||
|
<td>域名</td>
|
||||||
|
<td>
|
||||||
|
{{cluster.domainName}}<link-icon :href="'/clusters/cluster/settings/dns?clusterId=' + cluster.id"></link-icon>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>默认SSH认证</td>
|
<td>默认SSH认证</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{$layout "layout_popup"}
|
||||||
|
|
||||||
|
<h3>CORS跨域设置</h3>
|
||||||
|
<form class="ui form" data-tea-action="$" data-tea-success="success">
|
||||||
|
<csrf-token></csrf-token>
|
||||||
|
<input type="hidden" name="headerPolicyId" :value="headerPolicyId"/>
|
||||||
|
<http-cors-header-config-box v-model="cors"></http-cors-header-config-box>
|
||||||
|
<submit-btn></submit-btn>
|
||||||
|
</form>
|
||||||
Reference in New Issue
Block a user