You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome启用实验特性后localhost跨域预检失败,改用IP正常的问题咨询

跨域请求localhost失败问题解答

问题背景

环境配置

  • Chrome v106浏览器,已启用flags中的"Experimental Web Platform features"特性
  • 本地Chrome访问域名remote
  • 本地运行基于.NET Framework的HTTP监听器,监听地址为http://localhost:8850

问题现象

当remote域名下的JS发起向http://localhost:8850/Data的请求时,预检请求失败,报错:

net::err_failed,具体提示为:"Access to fetch at 'http://localhost:8850/Data' from origin 'http://remote' has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space local."

将请求地址及服务器监听器配置中的localhost改为本地实际IP后,预检请求可正常通过。

疑问

  1. 为何改用IP可正常工作?
  2. 是否有办法让localhost也能正常使用?
  3. 禁用该Chrome实验特性则无此问题,该特性的具体变更内容是什么?

解答

1. 改用IP可行的原因

Chrome的私有网络访问控制机制会对地址空间做分层限制:

  • localhost被划分为最高风险的local地址空间,属于本地环回资源
  • 本地内网IP(如192.168.x.x)属于private地址空间,风险等级更低

非安全上下文的外部域名(remote是普通HTTP域名,不属于安全上下文)请求local空间资源会被直接拦截;而请求private空间的限制更宽松,因此改用IP后可通过预检。

2. 让localhost正常工作的方案

有几种可行方式:

  • 升级remote为安全上下文:将remote部署为HTTPS协议,安全上下文下浏览器允许向local地址空间发起跨域请求
  • 修改Chrome启动参数:添加--disable-features=PrivateNetworkAccessCheck,直接关闭私有网络访问检查机制
  • 配置CORS响应头(配合HTTPS):如果remote是HTTPS,服务器端返回Access-Control-Allow-Origin: https://remote,可选额外添加Access-Control-Allow-Private-Network: true明确允许私有网络访问

3. "Experimental Web Platform features"特性的核心变更

该实验特性主要落地了**私有网络访问控制(Private Network Access)**规则,核心变更包括:

  • 把网络地址分为public(公网)、private(内网IP)、local(localhost/环回地址)三个风险层级
  • 限制非安全上下文的外部域名,不能向更私有层级的地址发起跨域请求(如公网域名→localhost)
  • 新增预检请求的校验逻辑,强制检查请求上下文的安全性和目标地址的私有等级
  • 仅安全上下文(HTTPS、localhost自身页面)可不受限制地访问local或private地址空间的资源

内容的提问来源于stack exchange,提问作者Dries

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:35:33