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

如何修复URL冒号被转义为%3a导致的主机找不到错误

问题描述

开发过程中编写如下URL配置代码:

components.host = "37.143.66.25:9875"
该配置值包含冒号:,发起网络请求时收到如下错误信息:
NSLocalizedDescription=A server with the specified hostname could not be found., NSErrorFailingURLStringKey=http://37.143.66.25%3a9875/spots/test, NSErrorFailingURLKey=http://37.143.66.25%3a9875/spots/test, _kCFStreamErrorDomainKey=12}
错误信息中原本的冒号:被自动转义为%3a,导致主机解析失败、请求报错。

解决方案
  • 问题根源是URL组件的host属性仅接收纯主机标识(IP地址或域名),不允许直接拼接端口号。系统识别到host字段内的冒号属于非法字符,会自动对其做百分号转义,最终生成错误的请求地址。
  • 正确处理方式是将IP地址和端口号拆分后分别赋值:纯IP部分赋值给host属性,数字格式的端口号单独赋值给port属性,参考代码如下:
// 单独赋值主机IP
components.host = "37.143.66.25"
// 单独赋值端口号
components.port = 9875
  • 拆分赋值后再生成最终请求URL,系统会自动在主机和端口之间补充合法的冒号分隔符,不会触发错误转义,最终生成的正确请求地址为http://37.143.66.25:9875/spots/test,可正常完成主机解析和请求发送。
    注意:不要尝试手动对host字段做百分号反解码处理,该操作会触发URL组件的合法性校验逻辑,引发其他异常,拆分字段赋值是符合系统设计规范的标准处理方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:57:16