node.js - GET请求上的Nodejs IPV6 IP地址不一致
问题描述
更新:
因此,如果我添加以下内容,这将按预期工作:
const options = {
...standardStuff,
family: 6,
}
添加family: 6
选项意味着它按预期工作。所以我想我的问题会变成为什么?从文档中它指出:
IP address family to use when resolving host or hostname.
Valid values are 4 or 6. When unspecified, both IP v4 and v6 will be used.
Whixh 会让我得出结论,IPV6
无论如何我都不需要这样做。为什么curl
等不重要?
为我们注册的地址设置规则,并将我的地址zone lockdown
添加到白名单中。我从谷歌搜索得到这个。cloudflare
cname
IPV6
whatsmyip
我还以ipv4
格式添加了我的公司 VPN IP 地址。
当我卷曲这个端点时,我收到了 expeted 200
- 但是当我通过运行请求时,nodejs
我收到一个403
.
这甚至更奇怪,因为我可以通过golang
,访问端点insomnia
,并且当我连接到网络curl
时也可以通过它访问它- 例如 VPN 或者如果我将手机连接到我的笔记本电脑。nodejs
ipv4
curl https://my-restricted-endpoint.com
# 200
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
resp, err := http.Get("https://my-restriced-endpoint.com")
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.StatusCode)
// 200
}
const requestAsync = (options: RequestOptions | string | URL): Promise<number> => {
return new Promise((resolve, reject) => {
const req = request(options, (res) => {
if (typeof res.statusCode !== 'number') {
reject('no status code returned');
return;
}
resolve(res.statusCode);
});
req.on('error', (error) => {
reject(error);
});
req.on('timeout', () => {
reject('request timed out');
});
req.end();
});
};
const statusCode = await requestAsync('https://my-restricted-endpoint.com')
// returns 200 on VPN or thetherd to phone with an ipv4 ip address
// returns 403 otherwise
我对 netowkring 和 IPV4/6 的了解仅限于不存在 - 但感觉这是nodejs
与请求有关的原因。
我也尝试过使用axios
解决方案
因此,如果我只将我的ipv6
地址列入白名单,那么我需要通过设置强制nodejs
将主机名解析为.ipv6
{family: 6}
如果我将我的ipv6
和我的都添加ipv4
到白名单,那么我可以不理会该选项。
似乎golang
,curl
和insomnia
我正在使用的实现RFC6555 'Happy Eyeballs' 这意味着ipv6
将首先使用它,并且仅在失败时ipv4
使用。这就是为什么这些有效而nodejs
无效的原因。据我所知nodejs
,没有实现这一点,这意味着由于没有将我的ipv4
地址列入白名单,cloudflare
它会失败。
推荐阅读
- python - 为什么 Python Open CV imwrite 无法保存来自我的网络摄像头的简单图像?
- r - 如何使用 purrr 函数或循环自动调用 dplyr 函数
- ios - @Environment 属性包装键路径的默认值?
- javascript - 如何利用 if 函数在 Google 表格中选择要考虑的数据行?
- javascript - 有没有办法引用用 getContext("2d") 制作的正方形的对角?
- javascript - 类组件内的 const [item1,item2](react-native)?
- python - 从 Scrapy 中的请求中获取响应
- javascript - 如何使图像总是转到下一张
- reactjs - React-select typescript 升级 3 到 4
- spring-boot - @JoinColumn 以及它如何链接两个表