【问题标题】:How to use use IP in RESTful API request如何在 RESTful API 请求中使用 IP
【发布时间】: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是如何确定的:

  1. 如果 Request-URI 是 absoluteURI,则主机是 请求 URI。请求中的任何主机头字段值必须是 忽略。

  2. 如果 Request-URI 不是 absoluteURI,并且请求包括 一个Host头域,主机由Host头决定 字段值。

在请求URI中使用IP的原因是:在中国,移动dns解析不太好。用IP连接API服务器会好很多。

有办法实现吗?

谢谢!

【问题讨论】:

  • 如果您使用 cURL 与 API 通信,您可以尝试关闭 CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST
  • 谢谢,@DarkBee。但这不是一个选择。我想保证数据传输的安全。
  • 那么您将需要使用正确的主机名,因为这是他们在 SSL 证书中设置的主机名

标签: rest restful-url


【解决方案1】:

检查您的 GET URL,是否在 IP 之后有任何端口号,是否是 http 或 https 协议以及您的 REST API 路径。

【讨论】:

  • IP后无端口,协议为httpS。我确定是因为 API 服务是我的队友开发的 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2018-11-19
  • 2013-10-15
  • 2021-01-29
  • 1970-01-01
相关资源
最近更新 更多