我的应用程序服务器有一个基于Node.js的部署脚本。部署过程中的第一步是在向DNS注册之前,验证这些应用服务器是否正确侦听HTTPS。为此,我只需要向该服务器的IP地址发出HTTPS请求即可。
如果这是HTTP,则不是问题。我可以向发出HTTP
GET
请求http://[2001:0db8::0370:7334]/
,这将起作用。但是,如果我发出HTTPS
GET请求https://[2001:0db8::0370:7334]/
,则此操作将失败,因为证书用于特定的主机名,例如api.example.com
。
如果我是手动测试,则将IP地址临时放在hosts
文件和cURL中https://api.example.com
。但是,在此自动化过程中,我可能一次部署多个主机,因此这不是我的部署脚本的解决方案。
如何在指定主机名和IP地址的地方发出HTTPS请求?
也许有某种方法可以通过自定义代理进行操作?
我目前正在使用node-fetch,但是很高兴使用所需的任何API来完成这项工作。
设置host
请求的标题:
const https = require('https');
https.get('https://AA.BB.CC.DD', {
headers : { host : 'api.example.com' }
}, res => {
console.log('okay');
}).on('error', e => {
console.log('E', e.message);
});
编辑
:我挖了一下,看看这是如何工作的。为了允许基于HTTPS的虚拟主机,有一个称为SNI(服务器名称指示)的TLS扩展。客户端使用此扩展名指示其尝试连接的主机名,因此服务器可以选择属于该主机名的适当证书。
所使用的Node
tls
模块,可以https
选择servername
设置此主机名:
https.get('https://AA.BB.CC.DD', {
servername : api.example.com'
}, ...)
但是,您仍然还需要传递Host
标头(这是常规HTTP协议的一部分):
https.get('https://AA.BB.CC.DD', {
headers : { host : 'api.example.com' },
servername : 'api.example.com'
}, ...)
为了保持干燥,Node.js的将设置servername
为Host
标题,除非它已经设置为别的东西(在这里)。
如何使用库存文件中的主机名和IP地址的值? 例如,我在文件中只有一个主机,名称为 FQDN,但这是在 DNS 服务器上注册的。 我尝试了一些变量,但总是得到主机名。但是,需要他们两个:( My test.yml file: 输出是:
问题内容: 我有DNS服务器IP地址和主机名。 使用Java,如何使用该IP地址和主机名找到该DNS服务器返回的主机名的IP地址? 问题答案: 看看和方法。
问题内容: 我对本机Ajax请求调用有一个奇怪的问题。 我正在创建Ajax对象并发送请求,如下所示: .... 当我使用类似的URL访问servlet时,则无法在客户端得到响应。但是我可以在服务器端看到响应。 与我调用请求的方式非常相似 我的网址是,那么我也无法在客户端看到响应。 我知道解决问题的最佳方法。 我可以用 那么我的本地主机或IP地址都没有问题。 但是我仍然认为为什么ajax请求中的本地
问题内容: 我的主机文件(C:\ WINDOWS \ system32 \ drivers \ etc \ hosts)具有一堆IP地址到主机名的映射: 我正在尝试找到一种通过Java API以编程方式从IPAddress转换为HostName的方法。 伪代码: 问题答案: 我从这里尝试了代码,它可以工作。即:
主机名到IP地址的解析接口 函数 struct hostent * gethostbyname (const char *hostname) 获取主机地址 详细描述 主机名到IP地址的解析接口 函数说明 struct hostent* gethostbyname ( const char * hostname ) 获取主机地址 参数 hostname 一个字符串指针,包含域名或主机名
本文向大家介绍Java程序显示主机名和IP地址,包括了Java程序显示主机名和IP地址的使用技巧和注意事项,需要的朋友参考一下 要在Java中显示主机名和IP地址,代码如下 示例 输出结果 一个名为Demo的类包含主函数。在这个main函数中,定义了一个try和catch块。在try块中,创建了一个InetAddress实例,并使用getLocalHost函数获取InetAddress实例的主机地