You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ktor中完全禁用CORS,实现全类型跨域请求允许配置?

Ktor完全放开/禁用CORS配置方案

方案1:基于官方CORS插件配置

默认anyHost()仅放开跨域域名限制,不会放开请求方法、请求头的限制,需要额外补充配置:

install(CORS) {
    // 允许所有跨域来源
    anyHost()
    // 允许所有请求方法,包含自定义非标准方法
    allMethods()
    // 允许所有请求头,包含业务自定义头
    allowHeader("*")
    // 允许前端获取所有响应头
    exposeHeader("*")
    // 若需要允许前端携带凭证(Cookie、授权头)可添加以下配置,注意此时origin不能用*通配,无相关需求可省略
    // allowCredentials = true
    // 可选配置:调整预检请求缓存时长,减少重复预检请求
    maxAgeInSeconds = 3600
}

方案2:手动添加响应头(完全绕过CORS插件)

如果不需要使用官方CORS插件,可以直接通过拦截器全局添加跨域头,同时处理预检请求:

routing {
    // 优先处理所有OPTIONS预检请求
    options("{...}") {
        call.response.header("Access-Control-Allow-Origin", "*")
        call.response.header("Access-Control-Allow-Methods", "*")
        call.response.header("Access-Control-Allow-Headers", "*")
        call.respond(HttpStatusCode.OK)
    }

    // 拦截所有响应,统一注入跨域头
    intercept(ApplicationCallPipeline.Plugins) {
        call.response.header("Access-Control-Allow-Origin", "*")
        call.response.header("Access-Control-Allow-Methods", "*")
        call.response.header("Access-Control-Allow-Headers", "*")
        proceed()
    }

    // 业务路由写在下方即可
    // ...
}

注意:生产环境不建议直接使用*通配,存在安全风险,建议根据实际业务场景限定允许的域名、方法和请求头。

内容的提问来源于stack exchange,提问作者Sasha Shpota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:45:05