linux 如何在ubuntu 20.04上的nodejs中为google-auth-library请求选择ipv4

yhqotfr8  于 2024-01-06  发布在  Linux
关注(0)|答案(1)|浏览(124)

bounty将在2天后过期。回答此问题可获得+50声望奖励。LAZ希望引起更多关注此问题。

在以前的机器中,我只是简单地禁用了ipv6的传出请求,但在这里是不可能的,因为没有它,node中的fetch()会失败。
但是,某些特定的Google端点,即https://www.googleapis.com/oauth2/v1/certs
需要ipv4分辨率,这是由google-auth-library中的OAuth2Client内部请求的(通过Axios)。我从使用ipv6的请求中得到的响应是:

Your client does not have permission to get URL <code>/oauth2/v1/certs</code> from this server.  <ins>That’s all we know.</ins>

403: Forbidden

字符串
那么,有什么解决方案可以强制这些请求优先选择ipv4呢?

blmhpbnm

blmhpbnm1#

Node提供了一个首选IPv4解决方案的选项:
第一个月
这当然适用于所有请求。如果你真的需要用IPv6解决其他请求,你可以为特定的请求提供一个自定义的代理/调度器。
这里有一个使用undici的例子,但你也可以使用https.Agent

import { Agent } from 'undici';

await fetch('https://www.googleapis.com/oauth2/v1/certs', {
  dispatcher: new Agent({
    connect: {
      lookup: (hostname, options, callback) => {
        return dns.resolve4(hostname, options, callback);
      },
    },
  }),
});

字符串

相关问题