go x/pkgsite/cmd/pkgsite:使用相对链接进行静态文件等操作,

rjee0c15  于 4个月前  发布在  Go
关注(0)|答案(7)|浏览(47)

出现问题的页面的URL是什么?

你的user agent是什么?

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36

你做了什么?

当我在远程Visual Studio Code终端中本地运行pkgsite -open .时,会启动一个代理。https://coder.com/docs/code-server/latest/guide#stripping-proxyport-from-the-request-path
这通常意味着主页面将位于https://${hostname}/proxy/8080/,而static目录将在路径/proxy/8080/static/下。然而,似乎该网站总是试图在/static下找到它们,而且没有明显的方法可以更改这一点。

你看到了什么发生?

所有静态CSS和图片都无法加载。

你期望看到什么?

所有静态CSS和图片都能加载。

jgwigjjp

jgwigjjp1#

这个Visual Studio Code功能在哪里有文档记录?

gkl3eglg

gkl3eglg2#

这个Visual Studio Code功能在哪里有文档记录?
@seankhliao 我更新了标题和描述。看起来这个问题与使用 code-server 有关。使用 codespacesopenvscode-server 也可能会引发类似的问题,但我不确定。
看起来 feature 是问题出现的地方。
https://coder.com/docs/code-server/latest/guide#stripping-proxyport-from-the-request-path

从请求路径中去除 /proxy/<port>

你可能会注意到 code-server 代理会从请求路径中去除 /proxy/<port>
HTTP服务器应使用相对URL以避免需要与它们被提供的绝对路径绑定在一起。这意味着你必须去掉 use trailing slashes on all paths with subpaths
这就是为什么默认行为是去除基本路径中的 /proxy/<port> 的原因。如果你的应用程序使用相对URL且不假设它正在被提供的基本路径,那么无论你决定将其放在哪个端口上,或者将其放在 code-server 或其他代理后面,它都将正常工作。
然而,有些人更喜欢没有尾部斜杠的更干净的外观。省略尾部斜杠将你与基本路径绑定在一起,因为你无法正确使用相对重定向。如果你不介意这种权衡,可以使用 /absproxy ,并将路径原样传递(例如, /absproxy/3000/my-app-path )。

8ehkhllq

8ehkhllq3#

听起来你应该直接使用 /absproxy ?

jjjwad0x

jjjwad0x4#

听起来你应该直接使用 /absproxy ?
不,这没有区别。我非常确定这只防止了 code-server 修改请求并剥离代理路径。
我认为问题在于 pkgsite 没有使用相对路径。
例如:https://github.com/golang/pkgsite/blob/6631f5443b15cc3c38d20c33131ac82c8e192ef7/static/frontend/frontend.tmpl#L56

这个路径不起作用,因为它实际上位于 /proxy/8080/static//absproxy/8080/static/

vzgqcmou

vzgqcmou7#

我不知道如果我们做出这样的改变,对于pkg.go.dev会有什么影响。似乎我们需要在很多地方更新路径。

相关问题