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

SIP URI分隔符使用咨询:History-Info头中?与;的适用场景区分

两种格式的本质差异

SIP URI的结构在RFC 3261中明确规定,两种分隔符的作用完全不同:

  • 分号;:用于分隔SIP URI固有参数,属于URI本身的组成部分,会参与URI的匹配、路由计算逻辑,常见的user=phone、transport=tcp都属于这类参数
  • 问号?:用于分隔URI携带的请求头参数,不属于URI本身的属性,仅在使用该URI发起新请求时,会自动将这部分参数作为对应的请求头添加到新请求中

History-Info场景的正确用法

根据RFC 4244(History-Info头域官方规范)的定义,History-Info条目中用于记录呼叫跳转原因的Reason属于URI的元数据,需要作为URI参数存在,因此标准场景下应当使用分号;作为分隔符,也就是你给出的第二种格式是规范写法:
History-Info:<sip:xxxx@xx.com;user=phone;Reason=SIP%3Bcause%3D486>;index=1

问号写法的适用场景

你看到的第一种带?的写法属于非标准的扩展用法,仅在特定场景下使用:当你需要后续向该URI发起新请求时,自动在请求头中携带Reason: SIP;cause=486的头域,才会使用这种写法。但该写法不符合History-Info的规范,绝大多数标准SIP设备无法正确识别其中的跳转原因值,兼容性极差,非必要不推荐使用。

注意事项

无论使用哪种写法,Reason的取值都需要做URL编码,你示例中的SIP%3Bcause%3D486符合编码要求,可以避免特殊字符被解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:24:03