diff --git a/internal/web/actions/default/servers/server/settings/headers/updateCORSPopup.go b/internal/web/actions/default/servers/server/settings/headers/updateCORSPopup.go index 0ba1b6f5..00c00790 100644 --- a/internal/web/actions/default/servers/server/settings/headers/updateCORSPopup.go +++ b/internal/web/actions/default/servers/server/settings/headers/updateCORSPopup.go @@ -49,7 +49,7 @@ func (this *UpdateCORSPopupAction) RunPost(params struct { Must *actions.Must CSRF *actionutils.CSRF }) { - var config = &shared.HTTPCORSHeaderConfig{} + var config = shared.NewHTTPCORSHeaderConfig() err := json.Unmarshal(params.CorsJSON, config) if err != nil { this.Fail("配置校验失败:" + err.Error()) diff --git a/web/public/js/components/server/http-cors-header-config-box.js b/web/public/js/components/server/http-cors-header-config-box.js index 1aba22a4..3f0ce0d6 100644 --- a/web/public/js/components/server/http-cors-header-config-box.js +++ b/web/public/js/components/server/http-cors-header-config-box.js @@ -11,23 +11,110 @@ Vue.component("http-cors-header-config-box", { exposeHeaders: [], maxAge: 0, requestHeaders: [], - requestMethod: "" + requestMethod: "", + optionsMethodOnly: false } } + if (config.allowMethods == null) { + config.allowMethods = [] + } + if (config.exposeHeaders == null) { + config.exposeHeaders = [] + } + + let maxAgeSecondsString = config.maxAge.toString() + if (maxAgeSecondsString == "0") { + maxAgeSecondsString = "" + } return { - config: config + config: config, + + maxAgeSecondsString: maxAgeSecondsString, + + moreOptionsVisible: false + } + }, + watch: { + maxAgeSecondsString: function (v) { + let seconds = parseInt(v) + if (isNaN(seconds)) { + seconds = 0 + } + this.config.maxAge = seconds + } + }, + methods: { + changeMoreOptions: function (visible) { + this.moreOptionsVisible = visible + }, + addDefaultAllowMethods: function () { + let that = this + let defaultMethods = ["PUT", "GET", "POST", "DELETE", "HEAD", "OPTIONS", "PATCH"] + defaultMethods.forEach(function (method) { + if (!that.config.allowMethods.$contains(method)) { + that.config.allowMethods.push(method) + } + }) } }, template: `
| 启用CORS自适应跨域 | -
- |
-
| 启用CORS自适应跨域 | +
+ 启用后,自动在响应Header中增加对应的 |
+
| 允许的请求方法列表 | +
+ [添加默认]。 |
+
| 预检结果缓存时间 | +
+
+
+ 秒
+
+ |
+
| 允许服务器暴露的Header | +
+ |
+
| 实际请求方法 | +
+
+ |
+
| 仅OPTIONS有效 | +
+ 选中后,表示当前CORS设置仅在OPTIONS方法请求时有效。 + |
+