【笔记】浏览器PNA/LNA策略——记一次iframe中CORS报错的问题排查经历

【笔记】浏览器PNA/LNA策略——记一次iframe中CORS报错的问题排查经历

💡 原文中文,约11400字,阅读约需27分钟。
📝

内容提要

在排查 iframe 中的 CORS 报错时,发现 Chrome 新版的 Local Network Access(LNA)策略导致了问题。页面 A 正常访问,但通过 iframe 嵌入时因安全策略限制而被拦截。解决方案包括调整架构、显式授权或使用代理。

🎯

关键要点

  • Chrome 新版的 Local Network Access(LNA)策略导致 iframe 中的 CORS 报错。
  • 页面 A 直接访问正常,但通过 iframe 嵌入时被拦截。
  • CORS 报错信息中出现 'unknown address space',提示安全策略问题。
  • 排查过程中发现问题与 Chrome 的 LNA/PNA 安全策略有关。
  • LNA/PNA 策略限制公网网站访问内网服务,需用户授权。
  • 解决方案包括调整架构、显式授权或使用代理。
  • 建议将内网服务通过 API 网关暴露为同一地址空间。
  • 短期内可通过手动授权 Local Network Access 或在 iframe 中添加权限来解决问题。
  • 未来浏览器将更严格限制网页直接访问内网资源,推荐使用网关/代理架构。

延伸问答

Chrome 的 LNA 策略是什么?

Chrome 的 Local Network Access(LNA)策略限制公网网站访问内网服务,需要用户授权。

为什么在 iframe 中会出现 CORS 报错?

在 iframe 中访问时,Chrome 的安全策略会将请求视为跨地址空间访问,从而触发 CORS 报错。

如何解决 iframe 中的 CORS 报错问题?

可以通过调整架构、显式授权或使用代理来解决 iframe 中的 CORS 报错问题。

CORS 报错中的 'unknown address space' 是什么意思?

'unknown address space' 表示浏览器无法确定请求目标的地址空间,通常与 LNA 策略有关。

如何在 iframe 中添加权限以避免 CORS 报错?

可以在 iframe 标签中添加 allow="local-network-access" 属性来授予权限。

未来浏览器对内网资源的访问会有什么变化?

未来浏览器将更严格限制网页直接访问内网资源,推荐使用网关或代理架构。

➡️

继续阅读