news 2026/4/16 15:40:45

Chrome 外网访问本地 Lodop 打印服务完整解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Chrome 外网访问本地 Lodop 打印服务完整解决方案

前端打印代码里

if(lodopPrint.getLodop()){LODOP=lodopPrint.getLodop();letcount=LODOP.GET_PRINTER_COUNT();}else{notification.error({description:'请启动打印软件',duration:5,message:<span style={{color:'#f00'}}>Error</span>,style:{color:'#f00'}})}

lodopPrint.getLodop()这句判断,用外网 IP 或域名访问时会返回 false,查看浏览器控制台输出,会看到:

‘http://localhost:18000/CLodopfuncs.js?priority=0’ from origin
‘http://example.com:8888’ has been blocked by CORS policy: The
request client is not a secure context and the resource is in
more-private address spaceloopback

问题背景

当 Web 应用部署在外网服务器(如http://example.com:8888),但打印功能依赖用户本地的 Lodop 客户端时,浏览器会因安全策略阻止跨域访问localhost:18000,导致getLodop()返回false

问题分析

  1. 跨域限制:浏览器禁止 HTTP 页面访问本地 loopback 地址
  2. 安全策略:Chrome 要求访问本地服务必须是 HTTPS 或明确允许的不安全源
  3. Lodop 特性:作为本地客户端软件,必须在每个用户电脑上安装

解决方案:启用 Chrome 安全设置

核心思路

通过 Chrome 的Insecure origins treated as secure设置,允许特定 HTTP 域名访问本地服务。

详细步骤

步骤 1:打开 Chrome 实验性功能页面
  1. 打开 Chrome 浏览器
  2. 在地址栏输入:
    chrome://flags/#unsafely-treat-insecure-origin-as-secure
步骤 2:启用并配置
  1. 找到“Insecure origins treated as secure”选项
  2. 从默认的“Disabled”改为“Enabled”
  3. 在下方的输入框中添加你的域名:
    http://example.com:8888
  4. 如果需要多个域名,用逗号分隔:
    http://example.com:8888,http://other-domain.com:8080
步骤 3:重启浏览器

点击右下角的“Relaunch”按钮,Chrome 会自动重启使设置生效。

亲测可用!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 0:16:00

阿里软件测试工程师推荐|自动化测试——HTTP网络协议简介

HTTP网络协议HTTP是超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff0c;HTTP&#xff09;的缩写&#xff0c;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的…

作者头像 李华
网站建设 2026/4/16 10:03:32

VBA 64位API声明语句第017讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…

作者头像 李华
网站建设 2026/4/16 10:48:27

ue metahuman 绑定头发

目录 &#x1f9e9; 先确认你买的是什么类型 ✅ 正确绑定方法&#xff08;UE 官方方式&#xff09; 第一步&#xff1a;打开 MetaHuman 角色蓝图 第二步&#xff1a;找到头部 Skeletal Mesh 第三步&#xff1a;添加 Groom 组件 第四步&#xff1a;指定头发资产 第五步&a…

作者头像 李华
网站建设 2026/4/16 12:00:05

RecyclerView 多类型布局方案

@[TOC]目录 1. 基础实现方案 1.1 重写 getItemViewType() class MultiTypeAdapter(private val items: List<ListItem>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {companion object {const val TYPE_HEADER = 0const val TYPE_TEXT = 1const val TY…

作者头像 李华
网站建设 2026/4/16 13:34:12

鸿蒙应用如何集成第三方 SDK?真实项目中的完整实践

摘要 在实际的鸿蒙应用开发中&#xff0c;很少有项目是完全“从零开始”的。无论是统计埋点、支付登录、音视频处理&#xff0c;还是 AI 能力接入&#xff0c;都会或多或少依赖第三方 SDK。但很多同学在第一次接触鸿蒙时&#xff0c;会发现一个问题&#xff1a;Android 那一套…

作者头像 李华