快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
创建一个交互式教程页面,逐步解释:1) 同源策略 2) 网络安全限制 3) 基本解决方案。包含可运行的代码示例(HTML/JS),让用户可以直接在浏览器中体验不同解决方案的效果。- 点击'项目生成'按钮,等待项目生成完整后预览效果
小白也能懂:为什么我的连接被阻止了?
最近在学习网页开发时,遇到了一个让人困惑的问题:明明代码写得好好的,但浏览器却提示"此连接已被阻止,因为它是公共页面发起的,旨在连接到您本地网络上的设备或服务器"。作为一个新手,我花了不少时间才搞明白这背后的原因和解决方法,今天就把我的学习心得分享给大家。
为什么会出现这个错误?
同源策略在保护你
浏览器有个重要的安全机制叫"同源策略"(Same-Origin Policy)。简单来说,就是网页只能访问和它同源的资源。所谓"同源"指的是协议(http/https)、域名和端口号完全相同。比如https://example.com的页面不能直接访问http://example.com的资源,因为协议不同。本地网络访问限制
当网页尝试访问你本地网络中的设备(比如192.168.1.100这样的内网IP)时,浏览器会阻止这种请求。这是为了防止恶意网站扫描你的家庭网络,保护你的智能家居、NAS等设备安全。公共页面与本地设备的隔离
公共网页运行在互联网上,而你的本地设备在内网中。浏览器默认不允许这种跨网络的直接访问,防止潜在的安全风险。
三种简单解决方法
方法一:使用代理服务器
- 设置一个中间代理服务器,让公共网页通过这个代理与本地设备通信。
- 代理服务器可以放在公网上,也可以使用云服务。
- 这样网页只需要与代理通信,由代理负责转发请求到本地设备。
方法二:配置CORS(跨域资源共享)
- 如果你控制着目标服务器,可以在响应头中添加:
- Access-Control-Allow-Origin: 允许的域名
- Access-Control-Allow-Methods: 允许的HTTP方法
- 这样浏览器就会允许跨域请求。
- 注意这需要你能修改服务器配置。
方法三:使用WebSocket
- WebSocket协议不受同源策略限制。
- 可以在本地设备运行WebSocket服务。
- 网页通过WebSocket与设备建立持久连接。
- 这种方式适合需要实时通信的场景。
实际体验建议
在学习这些网络概念时,我发现在InsCode(快马)平台上实践特别方便。它提供了即时的代码运行环境,可以快速测试不同的解决方案,还能一键部署演示项目,省去了配置本地开发环境的麻烦。
比如测试CORS配置时,我可以在平台上快速创建前后端分离的项目,分别设置不同的"源"来模拟跨域场景,然后尝试各种解决方案。平台的内置预览功能让我能立即看到效果,这对理解这些抽象的安全概念特别有帮助。
作为新手,我觉得最重要的是理解这些安全限制的初衷,而不是简单地绕过它们。浏览器这些看似"麻烦"的限制,实际上都是在保护我们的安全和隐私。希望这篇分享能帮助其他初学者少走些弯路!
快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
创建一个交互式教程页面,逐步解释:1) 同源策略 2) 网络安全限制 3) 基本解决方案。包含可运行的代码示例(HTML/JS),让用户可以直接在浏览器中体验不同解决方案的效果。- 点击'项目生成'按钮,等待项目生成完整后预览效果