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

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

  •  
  •   HarryQu · 2019-11-01 15:38:30 +08:00 · 2791 次点击
    这是一个创建于 1884 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是因为 CROS 吗 ?
    12 条回复    2019-11-01 18:26:06 +08:00
    Latin
        1
    Latin  
       2019-11-01 15:58:21 +08:00
    codehz
        2
    codehz  
       2019-11-01 17:45:49 +08:00
    当然是为了安全啊)
    你直接用 native socket 的话,怎么做鉴权,如何防止一键扫描内网呢)
    HarryQu
        3
    HarryQu  
    OP
       2019-11-01 17:54:10 +08:00
    @Latin 嗯,我之前看到了这篇文章,它没说为什么浏览器不支持调用 socket。
    HarryQu
        4
    HarryQu  
    OP
       2019-11-01 17:56:08 +08:00
    @codehz 有道理...
    Nitroethane
        5
    Nitroethane  
       2019-11-01 17:58:52 +08:00
    浏览器引入沙盒的原因就是为了各种限制网页端的能力,如果网页支持调用 socket 系统调用,那跟万恶的 activex 有啥区别
    Nitroethane
        6
    Nitroethane  
       2019-11-01 18:00:18 +08:00
    表述可能稍微有点问题,不是很清楚 activex 能不能用 socket 系统调用,不过大致意思就是这样
    singerll
        7
    singerll  
       2019-11-01 18:02:28 +08:00 via Android
    因为 浏览器是基于 HTTP 的标准客户端
    sujin190
        8
    sujin190  
       2019-11-01 18:05:20 +08:00
    有了 socket 还有啥不能干的,想想看某天百度哪个产品经理脑洞大开,百度一下,来个悄悄拍的私照啊什么的直接帮你发布在微博,嗯,你就上热搜了,是不是太过刺激了一点
    learnshare
        9
    learnshare  
       2019-11-01 18:06:56 +08:00
    浏览器是一个沙盒执行环境,目的就是为了隔离系统环境,提供统一的运行环境
    passerbytiny
        11
    passerbytiny  
       2019-11-01 18:13:14 +08:00
    你首先要分清楚: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  
    OP
       2019-11-01 18:26:06 +08:00
    @passerbytiny 我之前对 Socket 的理解是 : Socket 是系统对 TCP/UDP 的一层抽象。

    为什么不能理解为系统对上层应用提供的 API 呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2779 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:05 · PVG 21:05 · LAX 05:05 · JFK 08:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.