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

为何JavaScript中非HTTP(S)的URL对象协议无法修改?

JavaScript中URL对象修改协议的跨运行时不一致问题

在JavaScript中使用URL对象修改URL协议时存在部分限制,但MDN的URL、URL.prototype.protocol相关文档里并未提及该行为的说明及设计原因。

不同JavaScript运行时的表现存在差异:

  • Firefox、Node.js、Deno会拒绝修改部分协议(比如从webcal:改为https:)
  • Chrome、Safari、Bun则支持这类协议修改

代码示例:

const url1 = new URL('http://example.com')
console.log(url1.protocol) // 输出: http:
url1.protocol = 'https:'
console.log(url1.protocol) // 输出: https:

const url2 = new URL('webcal://example.com')
console.log(url2.protocol) // 输出: webcal:
url2.protocol = 'https:'
console.log(url2.protocol) // 输出: webcal:(预期应为https:)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:39:50