如何使用HTTP“主机”标头(使用GoLang)定位特定的应用服务器

mdwhatcott

问题:

为什么我不能使用GoLang中请求URL中的IP地址和主机名作为“主机”标头来定位服务器?为什么使用python可以正常工作?(2.7.6-urllib2)

背景:

我正在编写一个系统测试,该测试会将HTTP请求发送到正在测试的多个特定应用服务器,并检查结果的正确性。每个应用程序服务器具有相同的功能,并且应返回相同的响应数据。这些服务器分组在负载均衡器后面。然后,这些负载平衡器由DNS解析,并将流量转发到适当的后端服务器。为了独立地定位每个服务器(用于测试),我在URL中使用每个服务器的IP地址,而不是通常的主机名,并且将“ Host” HTTP标头设置为通常在url中使用的主机名。这是为了确保SSL证书可以解码安全(HTTPS)请求。

当前状态:

我已经有一个发送这些测试请求的python脚本。这是该脚本的基本思想:

headers = {"Host": "<hostname>"} # this <hostname> is usually what would go in the URL on the next line
request = urllib2.Request('https://<ip-address>/path?query=123', headers=headers)
response = urllib2.urlopen(request)
# etc... 

这段代码已经运行了好几个月了。我已经验证它确实基于IP地址针对了正确的服务器。

目标:

我想在golang中复制此脚本以利用go的并发功能。我使用go的原因是我想一次发送更多的请求(使用goroutines)。

问题:

使用上面显示的相同技术(但在Go中),出现以下错误:

Get https://<ip-address>/path?query=123: x509: cannot validate certificate for <ip-address> because it doesn't contain any IP SANs

这是我编写的那种代码的示例:

request, _ := http.NewRequest("GET", "https://<ip-address>/path?query=123", nil)
request.Header.Set("Host", "<hostname>")

client := &http.Client{}
response, err := client.Do(request)
// etc...

同样,为什么GoLang代码返回错误时python代码仍然有效?

卡列布

根据python文档

警告:HTTPS请求不对服务器证书进行任何验证。

要在Go中复制此行为,请参见:https : //stackoverflow.com/a/12122718/216488

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Quarkus内部使用哪个应用服务器?

来自分类Dev

何时断开Bosh连接从应用服务器建立以使用预绑定?

来自分类Dev

我应该使用 tomcat 还是应用服务器?

来自分类Dev

使用 Selenium 在所有应用服务器上加载缓存

来自分类Dev

我们如何在不常见的Web服务器(如Caddy)上使用“ Passenger”这样的应用服务器?

来自分类Dev

即使应用服务器 puma 关闭,rails 服务器如何提供页面?

来自分类Dev

是否可以使用Rest-API在不使用Admin SDK的应用服务器上订阅令牌?

来自分类Dev

JBOSS应用服务器和Servlet

来自分类Dev

研究支持Java 8的应用服务器

来自分类Dev

线程池配置Java应用服务器

来自分类Dev

Android聊天应用服务器的建议?

来自分类Dev

marklogic用户应用服务器

来自分类Dev

流星作为纯应用服务器

来自分类Dev

Delphi SOAP应用服务器中的WebModule

来自分类Dev

Hapshmap 与 tomcat 应用服务器

来自分类Dev

分离 REST API 和应用服务器

来自分类Dev

通过Maven支持多个应用服务器

来自分类Dev

使用GCM进行设备到设备的消息传递,而无需注册应用服务器

来自分类Dev

我可以使用我的应用服务器为GCM生成注册令牌吗?

来自分类Dev

如何验证我的Tomcat应用服务器正确支持FIPS 140-2?

来自分类Dev

如何在Ubuntu中设置Node.js应用服务器

来自分类Dev

如何在网站旁边设置FCM应用服务器以发送推送通知?

来自分类Dev

如何在Apache Web服务器中附加URL以重定向到weblogic应用服务器

来自分类Dev

与应用服务器不同的服务器上的视频转换

来自分类Dev

结合 Angular 2 应用服务器和 REST 服务器模块

来自分类Dev

使用mono和Owin自托管主机删除“服务器”标头

来自分类Dev

如何为同一域但上下文路径不同的2个不同的Web /应用服务器?

来自分类Dev

如何为同一域但上下文路径不同的2个不同的Web /应用服务器?

来自分类Dev

获取应用服务器服务请求的IP

Related 相关文章

  1. 1

    Quarkus内部使用哪个应用服务器?

  2. 2

    何时断开Bosh连接从应用服务器建立以使用预绑定?

  3. 3

    我应该使用 tomcat 还是应用服务器?

  4. 4

    使用 Selenium 在所有应用服务器上加载缓存

  5. 5

    我们如何在不常见的Web服务器(如Caddy)上使用“ Passenger”这样的应用服务器?

  6. 6

    即使应用服务器 puma 关闭,rails 服务器如何提供页面?

  7. 7

    是否可以使用Rest-API在不使用Admin SDK的应用服务器上订阅令牌?

  8. 8

    JBOSS应用服务器和Servlet

  9. 9

    研究支持Java 8的应用服务器

  10. 10

    线程池配置Java应用服务器

  11. 11

    Android聊天应用服务器的建议?

  12. 12

    marklogic用户应用服务器

  13. 13

    流星作为纯应用服务器

  14. 14

    Delphi SOAP应用服务器中的WebModule

  15. 15

    Hapshmap 与 tomcat 应用服务器

  16. 16

    分离 REST API 和应用服务器

  17. 17

    通过Maven支持多个应用服务器

  18. 18

    使用GCM进行设备到设备的消息传递,而无需注册应用服务器

  19. 19

    我可以使用我的应用服务器为GCM生成注册令牌吗?

  20. 20

    如何验证我的Tomcat应用服务器正确支持FIPS 140-2?

  21. 21

    如何在Ubuntu中设置Node.js应用服务器

  22. 22

    如何在网站旁边设置FCM应用服务器以发送推送通知?

  23. 23

    如何在Apache Web服务器中附加URL以重定向到weblogic应用服务器

  24. 24

    与应用服务器不同的服务器上的视频转换

  25. 25

    结合 Angular 2 应用服务器和 REST 服务器模块

  26. 26

    使用mono和Owin自托管主机删除“服务器”标头

  27. 27

    如何为同一域但上下文路径不同的2个不同的Web /应用服务器?

  28. 28

    如何为同一域但上下文路径不同的2个不同的Web /应用服务器?

  29. 29

    获取应用服务器服务请求的IP

热门标签

归档