Vue.component("http-cors-header-config-box", { props: ["value"], data: function () { let config = this.value if (config == null) { config = { isOn: false, allowMethods: [], allowOrigin: "", allowCredentials: true, exposeHeaders: [], maxAge: 0, requestHeaders: [], 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, 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自适应跨域

启用后,自动在响应Header中增加对应的Access-Control-*相关内容。

允许的请求方法列表

[添加默认]Access-Control-Allow-Methods值设置。所访问资源允许使用的方法列表,不设置则表示默认为PUTGETPOSTDELETEHEADOPTIONSPATCH

预检结果缓存时间

Access-Control-Max-Age值设置。预检结果缓存时间,0或者不填表示使用浏览器默认设置。注意每个浏览器有不同的缓存时间上限。

允许服务器暴露的Header

Access-Control-Expose-Headers值设置。允许服务器暴露的Header,请注意Header的大小写。

实际请求方法

Access-Control-Request-Method值设置。实际请求服务器时使用的方法,比如POST

仅OPTIONS有效

选中后,表示当前CORS设置仅在OPTIONS方法请求时有效。

` })