我正在使用 Azure API 管理为第三方提供一个干净的界面以进行集成。
我想用一个 JSON 对象做一个 POST 来在后端创建这个对象。这在门户网站中可用的测试控制台中运行良好,但是当我尝试从网页执行简单的客户端脚本时它不起作用:
$.ajax({
url: 'https://.azure-api.net/api/samplerequest/create?' + $.param(params),
type: 'POST',
data: JSON.stringify(sampleRequest),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, par2, par3) {
$("#txtResult").val(JSON.stringify(data));
}
});
将 contentType 标头设置为 'application/json' 会强制浏览器首先执行 OPTIONS 调用。我的 WebAPI 项目设置为启用 CORS,我已经对此进行了测试。我的 WebAPI 项目为 OPTIONS 方法返回以下标头:
Access-Control-Allow-Head... 内容类型 Access-Control-Allow-Orig... *
但是,如果我尝试使用 Azure 管理 API 调用此操作,我会获得 OPTIONS 方法的 200 状态,但不存在其他标头。我尝试了许多策略配置,这是我最近的尝试:
<policies>
<inbound>
<base />
<cors>
<allowed-origins>
<origin>*</origin>
<!-- allow any -->
</allowed-origins>
<allowed-methods>
<method>POST</method>
<method>OPTIONS</method>
</allowed-methods>
<allowed-headers>
<header>contentType</header>
</allowed-headers>
</cors>
</inbound>
<outbound>
<base />
</outbound>
</policies>
我缺少什么来完成这项工作?