为何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
相关产品推荐
相关产品推荐

