Azure API 管理 - 为什么请求需要主机 header?
Azure API Management - Why is Host header required for requests?
我在API管理中设置了一个简单的API。它是内部 API,连接到 VNet。
我没有为其设置 DNS,因此我正在通过内部 IP 地址对其进行测试。
请求如下所示:
GET http://10.x.x.x/query?id=3
如果我只是发送请求而没有附加 headers,我会收到 503 错误。
如果我用 API 的域名添加一个 Host header,像这样:
GET http://10.x.x.x/query?id=3
Host: apixxxxx.azure-api.net
然后它起作用了,我收到了 200。
为什么会发生这种情况,如何禁用所需的主机 header?
或者我怎样才能从一个将使用自己的主机的系统发出成功的请求header?
当您使用内部虚拟网络模式时,所有服务端点仅在您控制访问权限的虚拟网络内可见。它还包含请求。私有IP地址只能在虚拟网络内部访问。并且APIM可以通过域名访问,可以通过配置路由规则以Internal方式将请求路由到后端。看看DNS configuration。所以需要给host设置APIM域名才能访问
我在API管理中设置了一个简单的API。它是内部 API,连接到 VNet。
我没有为其设置 DNS,因此我正在通过内部 IP 地址对其进行测试。
请求如下所示:
GET http://10.x.x.x/query?id=3
如果我只是发送请求而没有附加 headers,我会收到 503 错误。
如果我用 API 的域名添加一个 Host header,像这样:
GET http://10.x.x.x/query?id=3
Host: apixxxxx.azure-api.net
然后它起作用了,我收到了 200。
为什么会发生这种情况,如何禁用所需的主机 header?
或者我怎样才能从一个将使用自己的主机的系统发出成功的请求header?
当您使用内部虚拟网络模式时,所有服务端点仅在您控制访问权限的虚拟网络内可见。它还包含请求。私有IP地址只能在虚拟网络内部访问。并且APIM可以通过域名访问,可以通过配置路由规则以Internal方式将请求路由到后端。看看DNS configuration。所以需要给host设置APIM域名才能访问