Chrome 98 专用网络访问问题 w/ 禁用网络安全:请求没有目标 IP 地址 space,但资源位于地址 space 本地
Chrome 98 Private Network Access problem w/ disabled web security: Request had no target IP address space, yet the resource is in address space local
我们在 public 站点上有一个测试环境。我们在 chrome 上使用 --disable-web-security 标志,以便测试人员在手动测试阶段绕过 public 服务调用的 CORS 错误。而且我们在代理机器上也有本地主机请求。然而,今天随着 Chrome 98 更新,我们开始为针对本地主机的网络请求而苦苦挣扎。
我们收到的错误是针对来自 public 站点的本地主机请求:
Access to XMLHttpRequest at 'https://localhost:3030/static/first.qjson' from origin 'https://....com' has been blocked by CORS policy: Request had no target IP address space, yet the resource is in address space `local`.
localhost 上的站点配置为 return Access-Control-Allow-* CORS headers 包括“Access-Control-Allow-Private-Network: true”。
而且我也没有看到任何预检请求。只有一个带有 CORS 错误的 GET 请求。
我们怀疑这可能是您通过 --disable-web-security 禁用网络安全时引起的副作用。它可能会阻止获取目标 IP 地址 space。我们的假设基于 https://wicg.github.io/private-network-access/
上的 CORS 预检部分
3.1.2. CORS preflight
The HTTP fetch algorithm should be adjusted to ensure that a preflight is triggered for all private network requests initiated from secure contexts.
The main issue here is again that the response’s IP address space is not known until a connection is obtained in HTTP-network fetch, which is layered under CORS-preflight fetch.
那么有人知道使用 --disable-web-security 标志进行专用网络访问的任何解决方法吗?
或者,也许我们遗漏了什么。感谢您的帮助。
下面的步骤可以帮助解决 chrome 98 中的问题,对于像 edge 这样的其他浏览器,你需要做类似的 chrome。
对于MAC
要求使用 chrome 版本 98。您需要按照以下步骤操作:- 运行 在终端上执行此命令
defaults write com.google.Chrome InsecurePrivateNetworkRequestsAllowed -bool true
重启你的浏览器,不行再重启你的机器
对于WINDOWS
- 运行 'regedit' 打开 windows 注册表(如果权限问题出现然后 运行 使用管理员命令提示符的命令)
- 转到Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome
- 使用“InsecurePrivateNetworkRequestsAllowed”名称创建新的 DWORD 值
- 将值更改为“1”
- 重新启动浏览器
LINUX
对于 linux 用户,您必须在此路径中创建策略文件:
mkdir -p /etc/chromium/policies/managed
# for chrome you should change the path to this
# /etc/opt/chrome/policies/managed
然后为策略创建一个新的 json 文件:
cd /etc/chromium/policies/managed
touch dev_policy.json
并将以下内容放入其中:
{
"InsecurePrivateNetworkRequestsAllowed": 1
}
对于 chrome:
{
"InsecurePrivateNetworkRequestsAllowed": true
}
就是这样,下次您在您的计算机上启动 chrome 时,它将加载此新策略。
p.s。您可以在此处检查政策是否已正确加载:chrome://policy/
我们在 public 站点上有一个测试环境。我们在 chrome 上使用 --disable-web-security 标志,以便测试人员在手动测试阶段绕过 public 服务调用的 CORS 错误。而且我们在代理机器上也有本地主机请求。然而,今天随着 Chrome 98 更新,我们开始为针对本地主机的网络请求而苦苦挣扎。
我们收到的错误是针对来自 public 站点的本地主机请求:
Access to XMLHttpRequest at 'https://localhost:3030/static/first.qjson' from origin 'https://....com' has been blocked by CORS policy: Request had no target IP address space, yet the resource is in address space `local`.
localhost 上的站点配置为 return Access-Control-Allow-* CORS headers 包括“Access-Control-Allow-Private-Network: true”。
而且我也没有看到任何预检请求。只有一个带有 CORS 错误的 GET 请求。
我们怀疑这可能是您通过 --disable-web-security 禁用网络安全时引起的副作用。它可能会阻止获取目标 IP 地址 space。我们的假设基于 https://wicg.github.io/private-network-access/
上的 CORS 预检部分3.1.2. CORS preflight
The HTTP fetch algorithm should be adjusted to ensure that a preflight is triggered for all private network requests initiated from secure contexts.
The main issue here is again that the response’s IP address space is not known until a connection is obtained in HTTP-network fetch, which is layered under CORS-preflight fetch.
那么有人知道使用 --disable-web-security 标志进行专用网络访问的任何解决方法吗? 或者,也许我们遗漏了什么。感谢您的帮助。
下面的步骤可以帮助解决 chrome 98 中的问题,对于像 edge 这样的其他浏览器,你需要做类似的 chrome。
对于MAC
要求使用 chrome 版本 98。您需要按照以下步骤操作:- 运行 在终端上执行此命令
defaults write com.google.Chrome InsecurePrivateNetworkRequestsAllowed -bool true
重启你的浏览器,不行再重启你的机器
对于WINDOWS
- 运行 'regedit' 打开 windows 注册表(如果权限问题出现然后 运行 使用管理员命令提示符的命令)
- 转到Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome
- 使用“InsecurePrivateNetworkRequestsAllowed”名称创建新的 DWORD 值
- 将值更改为“1”
- 重新启动浏览器
LINUX
对于 linux 用户,您必须在此路径中创建策略文件:
mkdir -p /etc/chromium/policies/managed
# for chrome you should change the path to this
# /etc/opt/chrome/policies/managed
然后为策略创建一个新的 json 文件:
cd /etc/chromium/policies/managed
touch dev_policy.json
并将以下内容放入其中:
{
"InsecurePrivateNetworkRequestsAllowed": 1
}
对于 chrome:
{
"InsecurePrivateNetworkRequestsAllowed": true
}
就是这样,下次您在您的计算机上启动 chrome 时,它将加载此新策略。
p.s。您可以在此处检查政策是否已正确加载:chrome://policy/