使用 Azure API 管理 pass-through 但返回 html 显示重定向
Use Azure API Management for pass-through but returning html showing redirecting
我尝试将我们 api 管理的后端从资源修改为 webapp api。
我参考了。
暴露的api是:
https://service-api-management.azure-api.net/api-name/operation-name
我想打电话的实际 api 是:
https://service-name.azurewebsites.net/api/Skills/Async/operation-name
除了 uri 之外,请求 body 和 header 应该保持不变。所以我设置了以下策略来更改 uri。但响应是 html 显示重定向。
好奇为什么 returns html 显示重定向以及如何使重定向正常工作。如有任何意见,我们将不胜感激。
政策:
<policies>
<inbound>
<base />
<set-backend-service base-url="https://service-name.azurewebsites.net" />
<rewrite-uri template="@(context.Request.Url.Path.Replace("/operation-name","/api/Skills/Async/operation-name"))" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
回复:
<!-- Copyright (C) Microsoft Corporation. All rights reserved. -->
<!DOCTYPE html>
<html>
<head>
<title>Redirecting</title>
......
测试并查看您的后端服务 returns 对 Postman 或 Fiddler 等工具的支持,这些工具最好模拟浏览器不发送的常规 HTTP 请求。也许后端期望隐式发送的请求中有一些 header ,或者重定向可能非常快并且不会被用户注意到。要使其通过 APIM 工作,您必须注意不要触发重定向或使其再次重定向到 APIM。在某种程度上 redirect-content-urls 政策可能在这里有用:https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#MaskURLSContent
我尝试将我们 api 管理的后端从资源修改为 webapp api。
我参考了
暴露的api是: https://service-api-management.azure-api.net/api-name/operation-name
我想打电话的实际 api 是: https://service-name.azurewebsites.net/api/Skills/Async/operation-name
除了 uri 之外,请求 body 和 header 应该保持不变。所以我设置了以下策略来更改 uri。但响应是 html 显示重定向。
好奇为什么 returns html 显示重定向以及如何使重定向正常工作。如有任何意见,我们将不胜感激。
政策:
<policies> <inbound> <base /> <set-backend-service base-url="https://service-name.azurewebsites.net" /> <rewrite-uri template="@(context.Request.Url.Path.Replace("/operation-name","/api/Skills/Async/operation-name"))" /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
回复:
<!-- Copyright (C) Microsoft Corporation. All rights reserved. --> <!DOCTYPE html> <html> <head> <title>Redirecting</title> ......
测试并查看您的后端服务 returns 对 Postman 或 Fiddler 等工具的支持,这些工具最好模拟浏览器不发送的常规 HTTP 请求。也许后端期望隐式发送的请求中有一些 header ,或者重定向可能非常快并且不会被用户注意到。要使其通过 APIM 工作,您必须注意不要触发重定向或使其再次重定向到 APIM。在某种程度上 redirect-content-urls 政策可能在这里有用:https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#MaskURLSContent