网站搜索

javascript - Angular 我如何在代码中获取重定向后的URL?


在一个 Angular 应用中,我让图片的 src 成为一个自定义 URL,例如,https://source.unsplash.com/1600x900/?facebook,这个会被重定向到他们服务器上托管的某张图片。

在某些情况下,结果 URL 会重定向到一个坏的图片,例如,https://source.unsplash.com/1600x900/?roblox 每当某个词没有合适的结果时,会重定向到 https://images.unsplash.com/source-404?fit=crop&fm=jpg&h=800&q=60&w=1200(例如,在这种情况下,roblox 是一个不合适的词)。

我如何在代码中访问这个重定向的 URL?

我已经尝试过的:

我通过 <img [src]="someFunctionReturningURL(t)" #t> 将 HTMLInputElement 传递给我的 TypeScript。在 someFunctionReturningURL(t) 内,我调用了 setTimeout(以确保 img 完全加载了 src URL)并测试 t.src == "https://images.unsplash.com/source-404?fit=crop&fm=jpg&h=800&q=60&w=1200",但问题是 t.src 仍然保持原始未重定向的链接 https://source.unsplash.com/1600x900/?roblox,而不是它实际被重定向到的链接!

答案#1

你可以使用 fetch 方法获取重定向的 URL,然后将其设置到 src 属性上:

fetch("https://source.unsplash.com/1600x900/?facebook")
  .then(res => {
    if (res.url) {
      this.imageSrc = res.url;
      console.log(this.imageSrc);
    }
  });

在 codesandbox 上的示例