核心内容摘要
探索“困困”的奇妙次元:一次关于理解与连接的柔软对话
前端打印代码里if(lodopPrint.getLodop()){LODOPlodopPrint.getLodop();letcountLODOP.GET_PRINTER_COUNT();}else{notification.error({description:请启动打印软件,duration:5,message:span styleError/span,style:{color:#f00}})}lodopPrint.getLodop()这句判断用外网 IP 或域名访问时会返回 false查看浏览器控制台输出会看到‘http://localhost:18000/CLodopfuncs.js?priority0’ from origin‘http://example.com:8888’ has been blocked by CORS policy: Therequest client is not a secure context and the resource is inmore-private address spaceloopback问题背景当 Web 应用部署在外网服务器如http://example.com:8888但打印功能依赖用户本地的 Lodop 客户端时浏览器会因安全策略阻止跨域访问localhost:18000导致getLodop()返回false。
问题分析跨域限制浏览器禁止 HTTP 页面访问本地 loopback 地址安全策略Chrome 要求访问本地服务必须是 HTTPS 或明确允许的不安全源Lodop 特性作为本地客户端软件必须在每个用户电脑上安装解决方案启用 Chrome 安全设置核心思路通过 Chrome 的Insecure origins treated as secure设置允许特定 HTTP 域名访问本地服务。
详细步骤步骤 1打开 Chrome 实验性功能页面打开 Chrome 浏览器在地址栏输入chrome://flags/#unsafely-treat-insecure-origin-as-secure步骤 2启用并配置找到“Insecure origins treated as secure”选项从默认的“Disabled”改为“Enabled”在下方的输入框中添加你的域名http://example.com:8888如果需要多个域名用逗号分隔http://example.com:8888,http://other-domain.com:8080步骤 3重启浏览器点击右下角的“Relaunch”按钮Chrome 会自动重启使设置生效。
亲测可用