我正在尝试在前端实现“在 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
目录,该目录因不存在而出错。
"/<ecr>:<img>/mnt/workspace"
不存在。我尝试在JS中转义image_url
const encodedImageUrl = encodeURIComponent(env.primaryImageUrl);
我期望这可以使 image_url 不被读取为完整 URL 的一部分,因为它是一个参数
我在 JS 或 Chrome 中缺少什么可能会导致这种情况吗?
结果非常简单,您必须对 URL 进行两次编码,如下所示:
const encodedImageUrl = encodeURIComponent(encodeURIComponent(env.primaryImageUrl));