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

如何通过Ktor客户端拦截器为请求添加请求头?

Ktor客户端拦截器添加请求头的正确实现

你的代码问题在于Ktor的HttpRequest是不可变对象,无法直接修改原请求的头信息,需要基于原请求创建新的请求实例来添加所需头。

修改后的代码如下:

install(HttpSend) {
    intercept { call, _ ->
        val originalRequest = call.request
        // 检查请求是否不存在No-Authentication头
        if (originalRequest.headers["No-Authentication"] == null) {
            val token = prefs.getString("UserToken", null) ?: ""
            // 构建新请求,添加目标头(示例用Authorization,可根据需求修改头名和格式)
            val newRequest = originalRequest.copy(
                headers = originalRequest.headers.append("Authorization", "Bearer $token")
            )
            // 传递新请求继续执行
            proceed(call.copy(request = newRequest))
        } else {
            // 存在指定头,直接放行原请求
            call
        }
    }
}

关键说明:

  • 利用request.copy()创建新请求对象,避免修改不可变的原请求
  • 通过headers.append()添加新头,支持自定义头名称和内容格式
  • 调用proceed()方法传递修改后的请求,确保新请求被正常发送

内容的提问来源于stack exchange,提问作者Adel Ayman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:45:35