我创建了一个短网址,比如说https://my.short.link/foo
,即指向https://my.other.website/bar
.
如何在浏览器中使用 javascript 方法检索此 url? (我使用的是角度)
这将取决于如何my.short.link
当您请求 URL 时,它会处理该 URL。
- 类型 1:真正基本的服务可能会使用重定向响应 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages(HTTP 302 等)。
- 类型 2:或者它可能使用成功的响应来提供 HTML 页面
<meta http-equiv="refresh" ...>
标签在其中。
- 类型 3:或者它可能使用成功的响应来服务 HTML 页面,通过 JavaScript 进行重定向。
Browser
如果您想在浏览器中执行此操作,您might能够获取上述服务类型 1 的信息,但无法获取其他服务的信息。
As 进化xbox 说 https://stackoverflow.com/questions/72053979/how-to-find-out-where-the-short-urls-point-to-with-javascript/72054044#comment127315637_72053979,你可以尝试fetch https://developer.mozilla.org/en-US/docs/Web/API/fetch,令人惊讶的是(对我来说!)if该服务使用简单的重定向响应来处理请求,您确实会在响应中看到一个新的 URL,但它不会包含哈希片段:
fetch("https://tsplay.dev/wEv6gN")
.then(r => {
if (!r.ok) {
throw new Error(`HTTP error ${r.status}`);
}
for (const [key, value] of r.headers) {
console.log(`${key}: ${value}`);
}
console.log(r.url);
})
.catch(console.error);
那个网址,https://tsplay.dev/wEv6gN
,重定向到https://www.typescriptlang.org/play?#code/MYewdgzgLgBAJgQygmBeGB5ARgKwKbBQB0AZgE554BeeAFAN4CwAUDGzBCALZ4BcMARgBMAZgA0LdjAA24AOb96AIgRLeSrEoC+E1u2kBLaPwDaS4EoC6uqSBL8lSm+wRksBqGVcBPfmACu0tLObFAAFgZgchD8AkRCuloAlADcLCxQ3gAOePBICAD6ANZ43mgwJd52MJk51YjIacwsJP5ghAbg8CAA6iBkRbRF-A2FlUkwTHps0niwAG4I0v656KMmRZZNUgD0O0QHLFpAA
通过 302(“永久移动”)重定向响应。在上面的代码中,我们只看到https://www.typescriptlang.org/play?
。但也许这足以满足您的目的。
但这对于上面的类型 2 和 3 不起作用。您必须能够读取和解析 HTML,并且同源政策 http://en.wikipedia.org/wiki/Same_origin_policy将阻止在您的源上运行的代码访问该 HTML。您可以尝试在iframe
(虽然我怀疑你并不是真的想要visit页面,您只想获取其 URL),但同样的问题也适用:即使iframe
转到目标位置,但由于 SOP,您将无法访问该位置。
Node.js 或类似的
如果您的意思是在 Node.js 或其他一些非浏览器环境中,那么:
- 对于类型 1 服务,您可以执行 HTTP 请求并查看重定向信息。
- 对于类型 2 服务,您可以执行 HTTP 请求、解析 HTML 并查找标签。
- 对于 Type 3,您需要使用无头浏览器(Puppeteer 等)来捕获它的去向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)