标签: azure-api-management

Azure API 管理 CORS:为什么我会收到“以‘Access-Control-’开头的标题已被删除……”

以下是一个简单的政策:

<policies>
    <inbound>
        <cors>
            <allowed-origins>
                <origin>http://microfost.com/</origin>
            </allowed-origins>
            <allowed-methods preflight-result-max-age="300">
                <method>GET</method>
                <method>POST</method>
                <method>PATCH</method>
                <method>DELETE</method>
            </allowed-methods>
            <allowed-headers>
                <header>content-type</header>
                <header>accept</header>
                <header>Authorization</header>
            </allowed-headers>
        </cors>
    </inbound>
</policies>  
Run Code Online (Sandbox Code Playgroud)

HTTP 请求

OPTIONS https://XXXX.azure-api.net/demo/XXX/XXX/* HTTP/1.1
Host: XXXX.azure-api.net
Ocp-Apim-Trace: true
Ocp-Apim-Subscription-Key: <secret>
Origin: http://microfost.com
Access-Control-Request-Headers: Authorization
Access-Control-Request-Method: GET
Run Code Online (Sandbox Code Playgroud)

回复内容

Access-Control-Allow-Origin: http://microfost.com
Ocp-Apim-Trace-Location: <trace>
Date: Mon, 27 Feb 2017 20:09:14 GMT
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

我收到此消息并期望 Origin 响应标头 我没有收到 3 个 API 中的 2 个的任何内容(1 个 API 使用与预期相同的策略)。

**Inbound**
[...]
cors (0 ms)
"Cross domain request was well formed and was allowed …
Run Code Online (Sandbox Code Playgroud)

azure cors azure-api-management

5
推荐指数
1
解决办法
1万
查看次数

使用API​​管理Azure配置应用程序网关

我想在Azure中的API管理和应用程序网关之间建立连接。请有人可以提供逐步的解决方案。

azure-api-management azure-application-gateway

5
推荐指数
1
解决办法
3975
查看次数

从Azure APIM策略中动态调用多个后端端点

我正在从Azure API Management(APIM)调用后端API,我需要在Logic Apps/Flow中为我的自定义连接器提供JSON模式.

根据我得到的响应内容,我需要执行其他调用以提供枚举/下拉.

考虑来自后端API的响应,如下所示:

{
  "member1": {
    "prop": "content"
  },
  "member2": {
    "prop": "content",
    "datasource": "http://someurl.com/api/member2/content"
  },
  "member3": {
    "prop": "content"
  },
  "member4": {
    "prop": "content"
    "datasource": "http://someurl.com/api/memberfour/content"
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要对"datasource"成员中的URL执行额外调用以提供其他数据,但这些数据显然是动态的,具体取决于我正在执行的调用.我有点卡住,因为我似乎无法为动态数量的呼叫和URL执行发送请求策略.我怎么能最好地接近这个?

azure azure-api-management azure-logic-apps microsoft-flow

5
推荐指数
1
解决办法
364
查看次数

在 Azure API 管理服务中禁用 Ocp-Apim-Trace

有没有办法Ocp-Apim-Trace在 Azure API 管理服务中禁用?

azure azure-api-management

5
推荐指数
1
解决办法
894
查看次数

如何在 Azure API 管理中为查询字符串参数指定重写 url

我正在使用 Azure API 管理将传入的查询字符串转换为另一个查询字符串。

我的转换代码是:

<policies>
    <inbound>
        <rewrite-uri template="api/primes?a={a}&b={b}" />
        <base />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>
Run Code Online (Sandbox Code Playgroud)

当我尝试保存编辑时,出现错误:

One or more fields contain incorrect values: 
'=' is an unexpected token. The expected token is ';'. Line 15, position 50.
Run Code Online (Sandbox Code Playgroud)

它指的是 中的等号符号a={a}。如何更正 的模板rewrite-uri?输入 url 是例如https://example.com/sum?a=7&b=5.

azure azure-api-management

5
推荐指数
1
解决办法
9299
查看次数

OData 的 Azure API 管理问题

我们有一个 OData v4 API,我们将其置于 Azure API 管理 (AAM) 服务之后,但在配置路由/操作时遇到了问题。简而言之,问题是 AAM 将拒绝对路由/操作的查询,除非它被明确配置(您收到 404 错误),但使用 OData 可以为每个操作(端点)的每个属性(属性)提供一个路由)。问题很快就变得难以处理。

OData 允许您查询单个属性/属性(例如 GET ~/api/Person(1234)/FirstName。如果我们把它放在 AAM 后面,我们需要将其定义为一个操作。只要有几个就可以了其中,但它可能意味着您必须很快定义成百上千的操作(除非我遗漏了一些东西)。我们有一个包含大约 35 个顶级操作的 API。每个资源平均有 20 个属性。那是 700 个操作我们会需要定义。除了所涉及的工作之外,对于 AAM 开发人员门户的用户来说,这将是一次令人震惊的体验。

我希望有人能告诉我一个简单的方法来解决这个问题。我知道我可以编写这些的创建脚本。如果您使用 OData $select 查询参数(这是我同时建议的),您也可以在某种程度上解决这个问题。我无法克服我在这里错过了什么的感觉。有没有办法为操作定义某种通配符部分(例如/Person/*)?我在 AAM 文档中找不到类似的内容。

odata azure-api-management

5
推荐指数
1
解决办法
1908
查看次数

API 管理身份提供者的权限字段中的内容

问题

我正在使用 Azure API 管理服务构建 API。我已经创建了一个 Azure AD B2C 租户,我可以通过它来授权对上述 API 的调用。

我能够成功设置租户;但是,我在尝试添加 Azure Active Directory B2C 类型的身份提供程序时遇到了问题。

我正在关注 2017 年的演练:https : //docs.microsoft.com/en-us/azure/api-management/api-management-howto-aad-b2c

问题是在 Azure 文档中未涵盖的实际创建向导中发生了一些更改。还有一个额外的字段是必需的:权威;那里有什么?

我试过的

到目前为止,我已经在网上搜索过,我唯一能找到的是 ASP.NET 应用程序引用以下架构的权限:

https://login.microsoftonline.com/tfp/ {tenant}/B2C_1_{signup_policy}

我尝试了此操作(填写我的租户和注册策略独有的缺失值),但收到错误消息:“一个或多个字段包含不正确的值:Azure Active Directory B2C 权限无效。”

有人可以告诉我应该去那里做什么,或者至少指出我更新的 Azure 文档的方向吗?同样,上面的链接文档是 2017 年的,没有提到授权字段。

azure azure-active-directory azure-api-management azure-ad-b2c

5
推荐指数
1
解决办法
556
查看次数

Azure API 管理:原始标头丢失或为空,并且请求被分类为非跨域。未应用 CORS 政策

我正在使用 Azure API 管理,并且需要使用它来管理三个 API。测试时,GET 方法工作正常,但是 post 方法出现以下错误:

原始标头丢失或为空,并且请求被归类为非跨域。未应用 CORS 政策。

我四处搜寻并发现了 CORS 和 APIM 的许多问题,但到目前为止我还没有看到我的具体问题。

CORS策略的当前配置是

<policies>
<inbound>
    <cors>
        <allowed-origins>
            <origin>*</origin>
        </allowed-origins>
        <allowed-methods>
            <method>GET</method>
            <method>POST</method>
        </allowed-methods>
    </cors>
</inbound>
<backend>
    <forward-request />
</backend>
<outbound />
<on-error />
</policies>
Run Code Online (Sandbox Code Playgroud)

我在以下地方寻找答案:

https://learn.microsoft.com/en-us/azure/api-management/api-management-cross-domain-policies

Azure API 管理 CORS:为什么我会收到“以‘Access-Control-’开头的标头已被删除...”

https://briancaos.wordpress.com/2018/04/05/azure-api-management-configure-cors-in-the-policy/

我的问题是 1. 我需要如何制定 CORS 策略,2. 我是否需要在 API Startup.cs 或配置文件中添加任何内容来处理 CORS?

谢谢?

azure cors azure-api-management

5
推荐指数
1
解决办法
9020
查看次数

自动从 Azure Function App 更新到 API 管理

鉴于可以按照此处所述将 Azure Functions 导入到 API 管理,那么当 Azure Functions 发生更改时,我们如何使 API 保持最新状态?例如,如果函数签名发生更改或者添加或删除函数。如何实现此过程自动化,以便一旦 Azure Functions 发生更改,这些更改就会反映在 API 中?

Microsoft 的 API 管理团队在这里提出了一个解决方案,但我不清楚如何将该解决方案与 Azure Function App 作为 API 的后端一起应用。

azure azure-api-management azure-devops azure-functions

5
推荐指数
1
解决办法
2129
查看次数

指定的 Swagger 版本未知。Azure APIM ARM 模板

仅当我通过 ARM 模板部署时,当我从门户尝试成功时,我才会遇到此问题。我认为问题可能出在我使用的版本上,所以我更改了模板中的最后 3 个版本( https://learn.microsoft.com/en-us/azure/templates/microsoft.apimanagement/service/apis ),还是同样的问题。有人可以指出我这里出了什么问题吗?我添加了最小复制。

昂首阔步:

{
  "openapi": "3.0.1",
  "info": {
    "title": "Test",
    "description": "Test",
    "version": "1.0"
  },
  "paths": {
    "/api/v1/test": {
      "get": {
        "tags": [
          "Test"
        ],
        "summary": "Test",
        "parameters": [
          {
            "name": "TestName",
            "in": "query",
            "schema": {
              "minLength": 3,
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "500": {
            "description": "Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": …
Run Code Online (Sandbox Code Playgroud)

azure-api-management azure-devops azure-rm-template openapi

5
推荐指数
1
解决办法
2725
查看次数