以下是一个简单的政策:
<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中的API管理和应用程序网关之间建立连接。请有人可以提供逐步的解决方案。
我正在从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执行发送请求策略.我怎么能最好地接近这个?
有没有办法Ocp-Apim-Trace在 Azure API 管理服务中禁用?
我正在使用 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.
我们有一个 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 文档中找不到类似的内容。
问题
我正在使用 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
我正在使用 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 Functions 导入到 API 管理,那么当 Azure Functions 发生更改时,我们如何使 API 保持最新状态?例如,如果函数签名发生更改或者添加或删除函数。如何实现此过程自动化,以便一旦 Azure Functions 发生更改,这些更改就会反映在 API 中?
Microsoft 的 API 管理团队在这里提出了一个解决方案,但我不清楚如何将该解决方案与 Azure Function App 作为 API 的后端一起应用。
仅当我通过 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)