云服务器推送的 JavaScript 没法控制局域网内设备?

查看 11|回复 0
作者:cowiejulewbfwo   
💻 项目情况与问题排版 (Project Status and Issue Formatting)
一、项目背景与初始设计 (Background and Initial Design)
您的项目是在云端搭建了一个平台 (Cloud Platform),集成了多个传感器控制程序。

  • 平台架构 (Platform Architecture):
  • 云端 (Cloud):核心平台和控制逻辑。
  • 客户端 (Client):用户笔记本电脑 (Laptop),运行浏览器。

  • 通信需求 (Communication Requirements):
  • 主要目标:通过串口通信 (Serial Communication) 控制传感器进行数据采集 (Data Acquisition)。

  • 初始设计 (Initial Design):[ol]
  • 访问 (Access): 笔记本通过浏览器访问云端平台网站。
  • 脚本推送 (Script Push): 云端将 JavaScript 脚本 (JavaScript Scripts) 推送 (Pushed) 到笔记本上。
  • 串口连接与控制 (Serial Connection and Control): 笔记本利用 Web Serial API 连接本地串口,与传感器进行通信和控制。
  • 数据回传 (Data Feedback): 采集到的数据返回 (Returned) 到云端。
    [/ol]

    二、当前遇到的瓶颈 (Current Bottleneck)
    由于新增了一个使用 HTTP 通信 (HTTP Communication) 的传感器,导致了安全策略限制问题。

  • 问题描述 (Issue Description):

    **出于安全考虑 (For security reasons)**,浏览器绝对禁止一个从服务器(例如 $https://your-app.com$)加载的网页,去直接访问或连接您本地局域网的另一个 IP 地址(例如 $http://192.168.1.89$)。

  • 策略限制 (Policy Constraints):
    此限制主要受以下浏览器安全策略的阻止 (Blocked):
    [ol]
  • 跨域资源共享 (Cross-Origin Resource Sharing, CORS)
  • 混合内容 (Mixed Content) 策略
    [/ol]

  • 本质问题 (Root Cause):
    您试图从一个 **安全上下文 (Secure Context)**(云端 HTTPS 网站)发起的页面中,向一个 **不安全/本地上下文 (Insecure/Local Context)**(本地局域网的 $http://IP$ 地址)发起请求,这在现代浏览器中是严格禁止的。

  • 有什么解决办法吗?
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部