Layui默认支持协议自动适配,因其资源路径采用相对路径或协议相对URL(如//开头),继承当前页面协议;硬编码http://或https://会导致混合内容错误。

不需要额外配置,layui.js 本身不关心协议,它默认就支持自动适配当前页面协议。
为什么不用配?
Layui 的资源加载(比如 CSS、模块 JS、图标字体)全部基于相对路径或协议相对 URL(即以 // 开头的路径),这类路径会继承当前页面的协议。只要你不是硬写死 http:// 或 https://,就不会出现混合内容(Mixed Content)报错。
常见错误其实是人为引入了绝对协议链接,比如:
- 在
<link>或<script>标签里写了http://unpkg.com/layui@2.8.0/dist/layui.js - 在
layui.config({ base: 'http://xxx/js/modules/' })里指定了带http://的base - 用
layui.link('http://xxx.css')动态加载了 HTTP 地址的样式
怎么确保自动适配协议?
把所有外部资源地址改成协议相对写法:
- ✅ 正确:
<script src="//unpkg.com/layui@2.8.0/dist/layui.js"></script> - ✅ 正确:
layui.config({ base: '//static.example.com/js/modules/' }); - ✅ 正确:
layui.link('//cdn.example.com/theme.css'); - ❌ 错误:
src="http://unpkg.com/..."或src="https://unpkg.com/..."(强行锁定协议)
注意:layui.config({ dir: '...' }) 如果设了,也必须用协议相对路径,否则在 HTTPS 页面下可能加载失败 CSS 或图标。
遇到“blocked mixed content”错误怎么办?
浏览器控制台报这个错,说明某处资源被硬编码为 http://,而当前页面是 HTTPS。排查重点:
- 检查所有
<link>、<script>标签的href/src - 检查
layui.config()里是否写了带协议的base或dir - 检查是否用了
layui.link()或自定义<link>加载了 HTTP 资源 - 检查第三方扩展组件(如
xm-select)的初始化代码里有没有写死协议
只要有一处漏掉,整个页面的 Layer 弹层、表格导出、图标字体都可能失效——这不是 Layui 的 bug,而是浏览器的安全策略在起作用。
真正容易被忽略的是:开发时本地用 file:// 协议打开 HTML,或 Nginx 代理层没透传 X-Forwarded-Proto,也会导致 JS 拿到错误的 window.location.protocol,进而影响动态加载逻辑。这种场景下,协议相对 URL 依然有效,但你要确认服务器返回的 HTML 本身没被中间件重写成绝对 HTTP 链接。

















