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

GJS中如何为Soup.Message添加自定义请求消息头

GJS 中为 Soup.Message 添加自定义请求头的实现方式

Soup.Message的request_headers属性为只读,指的是不能直接替换该属性本身的引用,并不是说属性指向的头对象不可修改。该属性返回的是一个已初始化的Soup.MessageHeaders实例,直接调用该实例的内置方法即可完成自定义头的增删改操作。

常用操作API

  • 覆盖/设置请求头:调用replace(headerName, headerValue)方法,如果对应头已存在会直接覆盖原有值,适合设置唯一值的头(比如鉴权头、自定义业务头)
  • 追加请求头:调用append(headerName, headerValue)方法,如果对应头已存在会追加多值,不会覆盖原有内容
  • 删除指定请求头:调用remove(headerName)方法
  • 读取单个请求头值:调用get_one(headerName)方法获取对应头的第一个值

代码示例(libsoup 3.0,GJS 常用版本)

import Soup from 'gi://Soup?version=3.0';
import GLib from 'gi://GLib';

// 初始化请求
const session = new Soup.Session();
const message = new Soup.Message({
    method: 'POST',
    uri: Soup.URI.new('https://your-api-endpoint.com/test')
});

// 添加自定义头
message.request_headers.replace('X-Custom-Auth', 'your-custom-token');
message.request_headers.replace('X-App-Version', '1.0.0');
message.request_headers.append('Accept-Language', 'zh-CN');

// 发送请求
const responseBytes = await session.send_and_read_async(message, GLib.PRIORITY_DEFAULT, null);

注意:不要尝试直接给message.request_headers赋值普通对象/新的MessageHeaders实例,这类操作会因为属性只读触发报错,只需要操作该属性返回的已有实例的内置方法即可。

如果使用旧版 libsoup 2.4,添加头的逻辑完全一致,仅初始化Message的写法有区别:

// libsoup 2.4 初始化Message的写法
const message = Soup.Message.new('GET', 'https://example.com');
// 加头逻辑和3.0版本完全相同
message.request_headers.append('X-Custom-Header', 'test-value');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:01:47