如何知道我将被重定向到的 url? [nodejs] [节点获取]

Posted

技术标签:

【中文标题】如何知道我将被重定向到的 url? [nodejs] [节点获取]【英文标题】:How to know the url that I will be redirected to? [nodejs] [node-fetch] 【发布时间】:2020-10-15 00:33:29 【问题描述】:

我正在尝试从谷歌云中的 url 加载 JSON 文件。我正在使用 node-fetch 包,它可以正常工作几个小时。问题是 google 经常更改重定向的 url。如何向我将被转发到的 URL 发出获取请求?或者至少知道我将被转发到哪个网址?我看到还有一个名为 request 的包,但它已被弃用。

这是代码

var express = require('express');
var router = express.Router();
var fetch = require('node-fetch');

router.get('/', async (req, res) => 
  
  const url = 'https://storage.cloud.google.com/blablabla/config.json';

  fetch(url)
    .then((res) => 
      if (res.ok) 
        return res.json();
      
    )
    .then((data) => res.send( data ))
    .catch((err) => res.send(err));
);

module.exports = router;

【问题讨论】:

我放弃了这种方法并将这个 json 文件保存在本地,因为它非常小。我想 thr0n 的回答会奏效! node-fetch 默认遵循重定向 (github.com/node-fetch/node-fetch#options)。请注意,您正在使用 fetch 响应覆盖路由器设置的“res”。 'res' 【参考方案1】:

您可以在响应标头中查找最终 URL。在您的情况下,res.headers.get('location') 应该可以解决问题。

【讨论】:

以上是关于如何知道我将被重定向到的 url? [nodejs] [节点获取]的主要内容,如果未能解决你的问题,请参考以下文章

新注册用户将被重定向到密码重置屏幕

Laravel 5如何通过控制器的登录方法从url获取参数

JS:如何通过重定向功能将url传递给登录功能

注销重定向到管理仪表板 laravel

nginx过滤资源文件(js/css/image)重定向问题

如何根据点击的目标使用 navigateToURL 将用户发送到不同的 URL?