Azure 机器学习 - CORS

Azure Machine Learning - CORS

我为此搜索了几个小时,但找不到任何可以回答问题的东西。我创建并发布了一个新的 Azure 机器学习服务,并创建了一个端点。我可以使用 Postman REST CLIent 调用该服务,但通过 JavaScript 网页访问它 returns 控制台日志显示已为该服务启用 CORS。现在,对于我来说,我无法弄清楚如何为 Azure 机器学习服务禁用 CORS。任何帮助将不胜感激,谢谢!

您必须使用 --disable-web-security(即 Chrome)启动您的浏览器。这是一些 jQuery 允许我在使用 --disable-web-security:

重新启动浏览器后调用该服务
$(document).ready(function () {
    var ajaxData = "-- the request body ";
    var serviceUrl = "https://ussouthcentral.services.azureml.net/workspaces/00e36959fc3e4673a32eae9f9b184346/--whatever";

    $.ajax({
        type: "POST",
        url: serviceUrl,
        data: ajaxData,
        headers: {
            "Authorization": "Bearer --API KEY HERE--",
            "Content-Type": "application/json;charset=utf-8"
        }
    }).done(function (data) {
        console.log(data);
    });
});

返回数据。注意:请务必在 Chrome 中看到该警告。我一开始没有,因为一些 Chrome 进程仍在后台 运行。杀死那些之后,用那个标志重新启动,看到消息,它起作用了。 ( Chrome v40.something )

参见:

目前,我们不支持在 API 端禁用 CORS,但您可以使用上述选项或使用 API 管理服务来禁用 CORS。下面的链接应该可以帮助您

以下是链接:step by step guide, also this video on setting headers, and this doc 关于政策。

API 管理服务允许 CORS,方法是在 API 配置页面中启用它

只是 Azure ML Book 的摘录(可能会有用):

This CORS restriction really means that if you wish to fully exploit Azure Machine Learning web services for deployment, testing, and production for a wide variety of (web) clients, you will need to host your own server-side applications. You basically have two choices.

  1. 托管 Web 应用程序,例如 ASP.NET 网页,并调用 Azure 机器学习 Web 服务服务器端以符合当前的 Azure 机器学习 CORS 限制。
  2. 托管自己的提供 CORS 支持的 Web 服务,然后可以通过 REST 和 [=20= 等现代协议和数据格式代表各种 Web 和移动客户端调用 Azure 机器学习 Web 服务].