我怎样才能使 HTML 页面上的所有相对 URL 相对于它所在的不同域(在 HTML 元素以及 JS HTTP 请求中)?

How can I make all relative URLs on a HTML page be relative to a different domain then it's on (in HTML elements as well as JS HTTP Requests)?

我有一个页面具有 "domain relative URLs",例如 ../file/foo/file/foo,在 a href 属性、img src 属性、视频、音频、web 组件中, js ajax 调用等

事情是这样的,当页面获得这样的 URL 时,我希望它们与一个特定的和不同的 domain 相关联,那么它实际上是打开的,所以说页面在 http://localhost:8081/page/浏览器会将它们翻译成:

但我真正想要的是所有相对 URL 都与它们所在的 domain 没有关系,而是与另一个 domain,e.x. http://localhost:5462/,因此转换为:

换句话说:我想要一个页面,其中包含的 URL,在 a-href、ajax 调用等中,无论您在哪里查看该页面都不会改变from(以便页面始终从同一来源获取相同的内容),它对完整的 URL 开箱即用,但对相对 URL 无效。一种定义和实施与 URL 相关的 domain 的方法,这样无论页面转到何处,其内容和行为都保持不变。

那么,我有什么选择来解决这个问题,哪个是最好的?一些想法:

一些需要考虑的事情


最好的解决方案应该是 base 标签,但它也适用于任意未修改的 javascript,而不是 just HTML 个元素。

但如果不存在 也许 可以将 base class 仅用于 HTML 元素,并结合使用使用一些非常简洁的 non-hacky javascript 成功拦截所有可能的 javascript 和 webassembly http(或任何其他协议)请求并将它们定向到正确的 domain 如果他们正在使用 domain 相对 URL?如果 真的是最好的解决方案 并且在技术上可行,我会怎么做?

经过一些试验后,我得出的结论是 HTTP 重定向是最好的解决方案,从根本上说,后端只是一种跳转到正确 URL 的方式。 POST 请求存在一些问题,虽然可以通过前端 javascript 修改来解决,但如果这确实是一个问题,则始终可以使用 "forwards" 切换重定向。