【发布时间】:2016-07-27 13:31:42
【问题描述】:
我想这样发送请求:
GET https://220.181.57.217/v1/groups
Host: test.restapi.foobar.com
但是得到了这个错误:
错误:SSLError:主机名“220.181.57.217”与“test.restapi.foobar.com”不匹配,同时对 URL:https://220.181.57.217/v1/groups 进行 GET 请求
根据rfc2616: Hypertext Transfer Protocol -- HTTP/1.1,是由于host是如何确定的:
如果 Request-URI 是 absoluteURI,则主机是 请求 URI。请求中的任何主机头字段值必须是 忽略。
如果 Request-URI 不是 absoluteURI,并且请求包括 一个Host头域,主机由Host头决定 字段值。
在请求URI中使用IP的原因是:在中国,移动dns解析不太好。用IP连接API服务器会好很多。
有办法实现吗?
谢谢!
【问题讨论】:
-
如果您使用 cURL 与
API通信,您可以尝试关闭CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST -
谢谢,@DarkBee。但这不是一个选择。我想保证数据传输的安全。
-
那么您将需要使用正确的主机名,因为这是他们在 SSL 证书中设置的主机名
标签: rest restful-url