如何使用 Javascript 找出短 URL 指向的位置

2024-02-23

我创建了一个短网址,比如说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(使用前将#替换为@)

如何使用 Javascript 找出短 URL 指向的位置 的相关文章

随机推荐

  • OpenCL 产生错误的计算

    我一直尝试使用openCL做一些计算 但结果不正确 我输入了三个 float3 如下所示 300000 0 0 300000 300000 0 300000 300000 300000 进入这个内核 kernel void gravitat
  • 如何在运行的容器内获取AWS Fargate任务实例元数据?

    当任务在 AWS Fargate 内部启动时 它有一个用于 Cloudwatch 日志的任务 ID guid 并且可以用作唯一的 运行 ID 我正在将 NET Core 应用程序启动到 AWS 容器中 并希望找到一种编程方式来提取任务 ID
  • System.Private.ServiceModel 的问题

    我创建了一个 Core 3 1 应用程序 它使用基于 net 标准 2 0 的 Web 服务 在本地开发环境中一切正常 在我将其部署到 UAT IIS 上之前 我收到以下异常 Exception System IO FileNotFound
  • 在 Mac OS X 10.6.8 上用什么来编译和模拟 Verilog 程序?

    作为教学大纲的一部分 我需要模拟 Verilog 程序 但是 我的大学使用 Xilinx ISE 但它不适用于 Mac 因此 请帮助我提供最好的软件以及有关如何安装和使用它们的一些详细步骤 你可以尝试伊卡洛斯 Verilog http iv
  • Android tab 片段不调用 OnCreateView 从 tab2 切换到 tab1

    这是选择 3 选项卡式布局时 Android Studio 自动生成的代码 问题是当它从第一个选项卡开始时 它会调用onCreateView in class PlaceholderFragment 当我切换到第二个选项卡时 它会再次为该选
  • 嵌套条件与复合条件

    这两个例子中哪一个表现更好 示例1 if condition 1 if condition 2 do something 示例2 if condition 1 and condition 2 do something 如果有的话 差异可以忽
  • 如何跳过空格但将其用作解析器组合器中的标记分隔符

    我正在尝试构建一个小型解析器 其中标记 幸运的是 从不包含空格 空白 空格 制表符和换行符 本质上是标记分隔符 除了有括号等的情况 我正在延长RegexParsers班级 如果我打开skipWhitespace当下一个标记与前一个标记的正则
  • GCC/X86,相对跳转问题

    我正在尝试在 x86 程序集中进行相对跳转 但是我无法让它工作 似乎由于某种原因 我的跳跃不断被重写为绝对跳跃或其他东西 我想做的一个简单的示例程序是这样的 global main main jmp 0x4 ret 由于 jmp 指令有 4
  • 为什么使用 WebRequest 发送 post 数据需要这么长时间?

    我目前正在创建一个 C 应用程序来绑定到 php MySQL 在线系统 应用程序需要将发布数据发送到脚本并获取响应 当我发送以下数据时 username test password test 我收到以下回复 Starting request
  • .png 动画在 spritekit 中性能缓慢

    我的项目中有一个 png 动画 包含 700 张图片 尺寸为 150 像素 x 150 像素 它工作正常 但每次动画开始时 整个游戏都会冻结约 0 1 秒 喜欢它的加载 但我在 initWithSize 中实现了 png 数组 像这样 SK
  • Bash 查找并移动名称中带有“[ ]”的文件

    我正在制作的 bash 脚本的一部分涉及 rar 分割文件 然后在完成后将分割文件移动到另一个目录 因此 如果我有一个像 test file txt 这样的文件 它首先会被 rarred 为 test file txt part1 rar
  • NumPy 排序函数返回 None

    我有一个简单的程序如下 import numpy as np arr np random randn 8 new arr sort new1 np sort arr print new print new1 我希望这两个新数组是相同的排序数
  • 计算值出现的次数

    我有一列带有重复值的文本值 我想创建一个新的唯一值列 无重复 和一个包含每个值的频率的列 最简单的方法是什么 由于行数不足 10 000 因此效率并不是太重要 为了得到答案而不是评论 请将列 例如 A 复制到 B 例如 并且仅对于 B 数据
  • 无法调用 UnsafeMutablePointer 类型的初始值设定项

    我正在尝试将字符串转换为 SHA256 哈希值 但出现下一个错误 Cannot invoke initializer for type UnsafeMutablePointer
  • 在 Eclipse 中调试 Playframework

    我刚刚从 Netbeans 迁移到 Eclipse 在 Netbeans 中 我可以开箱即用地调试 Playframework 应用程序 然而 在 Eclipse 中 似乎很难配置它来调试 Web 应用程序 具体来说是 Playframew
  • 如何点击 Selenium WebDriver 中的隐藏元素?

    我有一个显示一些记录的网格 当我单击一条记录并检查该元素时 显示它是隐藏的 但在网格中可见 我的 HTML 是 a href http 192 168 1 6 eprint prod 3 8 settings othercost add a
  • 如何更新到 mingw-gcc 4.8.2?

    我想在 c 11 中使用正则表达式 gcc 4 8 2 支持它 但 MinGW 安装程序最高仅支持 gcc 4 8 1 如何将其更新到 gcc 4 8 2 您可以自己手动安装 有一个 MinGW w64 发行版4 8 2 可在此处获取 ht
  • 赋值语句中的“others=>'0'”是什么意思?

    cmd register process rst n clk begin if rst n 0 then cmd r lt others gt 0 elsif clk event and clk 1 then cmd r lt end if
  • 如何命名 Rails 中的路线

    我有一些看起来像这样的路线 match hotels action id controller gt hotel action gt a z i id gt 0 9 i 我想用类似的东西酒店 不喜欢 路径我的代码中的某处引用了 hotels
  • 如何使用 Javascript 找出短 URL 指向的位置

    我创建了一个短网址 比如说https my short link foo 即指向https my other website bar 如何在浏览器中使用 javascript 方法检索此 url 我使用的是角度 这将取决于如何my shor