为什么 Azure APIM 重定向到后端服务 URL?

Why is Azure APIM redirecting to the backend service URL?

对 APIM 的调用突然开始重定向到后端服务。

在我的测试环境中,我得到了 301 永久移动,而对于部署到生产环境的完全相同的代码,我只得到了 200。

为什么我的 APIM 返回 301?

这是 HTTP 请求(第一个请求是飞行前请求):

APIM 中的设置如下:

最有可能的情况是,这根本不是 APIM 的错,301 响应很可能是从后端一路传来的。您可以使用 API 检查器来确保:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-api-inspector

默认情况下,如果后端用 301 回复 APIM,APIM 也会简单地向客户端回复 return301。看到响应中的位置 header 指向 azurewebsites 而不是 APIM.

您可以查看您的后端并使其不是 return 301,或者您可以通过策略使 APIM 遵循重定向响应:https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#ForwardRequest .后者会更慢,因为 APIM 需要两次调用后端以获得正确的响应。