【发布时间】:2022-01-04 06:46:04
【问题描述】:
对 APIM 的调用突然开始重定向到后端服务。
在我的测试环境中,我得到 301 Moved Permanently,而对于部署到 prod 的完全相同的代码,我只得到 200。
为什么我的 APIM 返回 301?
这是 HTTP 请求(第一个请求是飞行前请求):
这是 APIM 中的设置:
【问题讨论】:
标签: azure http azure-api-management http-status-code-301
对 APIM 的调用突然开始重定向到后端服务。
在我的测试环境中,我得到 301 Moved Permanently,而对于部署到 prod 的完全相同的代码,我只得到 200。
为什么我的 APIM 返回 301?
这是 HTTP 请求(第一个请求是飞行前请求):
这是 APIM 中的设置:
【问题讨论】:
标签: azure http azure-api-management http-status-code-301
最可能的情况是这根本不是 APIM 的错,很可能 301 响应是从后端一路传来的。您可以使用 API 检查器来确保:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-api-inspector
默认情况下,如果后端使用 301 回复 APIM,APIM 也会简单地将 301 返回给客户端。查看响应中的位置标头指向 azurewebsites 而不是 APIM。
您可以查看您的后端并使其不返回 301,或者您可以通过策略使 APIM 遵循重定向响应:https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#ForwardRequest。后者会更慢,因为 APIM 需要对后端进行两次调用才能获得正确的响应。
【讨论】: