首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
HarryQu
V2EX  ›  问与答

为什么浏览器不支持调用系统的 Socket ? 而提供了更高层的协议 websocket?

  •  
  •   HarryQu · 86 天前 · 993 次点击
    这是一个创建于 86 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是因为 CROS 吗 ?
    12 回复  |  直到 2019-11-01 18:26:06 +08:00
    codehz
        2
    codehz   86 天前
    当然是为了安全啊)
    你直接用 native socket 的话,怎么做鉴权,如何防止一键扫描内网呢)
    HarryQu
        3
    HarryQu   86 天前
    @Latin 嗯,我之前看到了这篇文章,它没说为什么浏览器不支持调用 socket。
    HarryQu
        4
    HarryQu   86 天前
    @codehz 有道理...
    Nitroethane
        5
    Nitroethane   86 天前
    浏览器引入沙盒的原因就是为了各种限制网页端的能力,如果网页支持调用 socket 系统调用,那跟万恶的 activex 有啥区别
    Nitroethane
        6
    Nitroethane   86 天前
    表述可能稍微有点问题,不是很清楚 activex 能不能用 socket 系统调用,不过大致意思就是这样
    singerll
        7
    singerll   86 天前 via Android
    因为 浏览器是基于 HTTP 的标准客户端
    sujin190
        8
    sujin190   86 天前
    有了 socket 还有啥不能干的,想想看某天百度哪个产品经理脑洞大开,百度一下,来个悄悄拍的私照啊什么的直接帮你发布在微博,嗯,你就上热搜了,是不是太过刺激了一点
    learnshare
        9
    learnshare   86 天前
    浏览器是一个沙盒执行环境,目的就是为了隔离系统环境,提供统一的运行环境
    passerbytiny
        11
    passerbytiny   86 天前
    你首先要分清楚:Network Socket 跟 Internet Socket 是相似的两码事; Socket 是数据通信机制或通信协议而不是系统 API ;串口上的 Socket、TCP 上的 Socket、WebSocket ( Http 上的 Socket ),其核心都是 Socket。

    然后,浏览器不能通过操作系统的 API 发起直接基于 TCP 的 Socket,是各大浏览器厂商遵循 W3C、ECMA 规范的结果。如果浏览器厂商不想遵循规范,它完全可以编制一套 API 让网页直接发起基于 TCP 的 Socket 连接。W3C、ECMA 规范只允许 WebSocket 而不允许 TCP Socket,原因就多了去了,不光是安全,让前端更容易开发也是一个重要的原因。
    HarryQu
        12
    HarryQu   86 天前
    @passerbytiny 我之前对 Socket 的理解是 : Socket 是系统对 TCP/UDP 的一层抽象。

    为什么不能理解为系统对上层应用提供的 API 呢?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   747 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 20:50 · PVG 04:50 · LAX 12:50 · JFK 15:50
    ♥ Do have faith in what you're doing.