`vscode://vscode-remote/k8s-container+` 带有编码的 docker 图像 URL 在终端中有效,但在 Chrome 中无效?

问题描述 投票:0回答:1

我正在尝试在前端实现“在 VSCode 中打开”按钮。

对于我们的 CLI 工具,我们使用这个:

code --disable-workspace-trust --folder-uri "vscode-remote://k8s-container+context=<context>+podname=<podname>+namespace=default+name=<image-name>+image=<ecr-address.com>%2F<ecr>%3A<img>/mnt/workspace"

效果很好,将 k8s pod 打开到正确的容器和工作区。

我正在尝试做与前端的

<a href={url}> </a>
链接标记几乎完全相同的事情,其中链接如下所示:

vscode://vscode-remote/k8s-container+context=<context>+podname=<podname>+namespace=default+name=<image-name>+image=<ecr-address.com>%2F<ecr>%3A<img>/mnt/workspace

但即使

:
/
被转义,该 URL 似乎仍然将我带到
<ecr>/<img>/mnt/workspace
目录,该目录因不存在而出错。

  • 终端进程启动失败:起始目录(cwd)
    "/<ecr>:<img>/mnt/workspace"
    不存在。
  • 工作空间不存在,请选择另一个工作空间打开。

我尝试在JS中转义image_url

const encodedImageUrl = encodeURIComponent(env.primaryImageUrl);

我期望这可以使 image_url 不被读取为完整 URL 的一部分,因为它是一个参数

我在 JS 或 Chrome 中缺少什么可能会导致这种情况吗?

javascript vscode-remote
1个回答
0
投票

结果非常简单,您必须对 URL 进行两次编码,如下所示:

const encodedImageUrl = encodeURIComponent(encodeURIComponent(env.primaryImageUrl));
© www.soinside.com 2019 - 2024. All rights reserved.