'Origin is not allowed by Access-Control-Allow-Origin' 自 2021 年以来

'Origin is not allowed by Access-Control-Allow-Origin' since 2021

对于一个学校项目,我和我的伙伴正在使用一个使用 Microsoft Azure 视频索引器 API 的网页,自上周以来一切正常,但现在我每次都会遇到此错误。 我认为这是因为新的一年,因为它在 1 月 1 日停止工作。奇怪的是,同样有效的代码片段不再有效了。例如,在 API 的网站上提出的用于获取令牌的示例不会

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
            "allowEdit": "False",
        };
      
        $.ajax({
            url: "https://api.videoindexer.ai/Auth/trial/Accounts/198UE0192/AccessToken?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("x-ms-client-request-id","");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","108D193J");
            },
            type: "GET",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html

我们在之前运行的 Angular 应用程序集成中发现了同样的问题。看起来 'Access-Control-Allow-Origin: *' CORS header 已从 API 响应中删除,这是直接 Web 应用程序集成所必需的,无需诉诸 API 代理。

我们已经解决了这个问题。您将在 API 回复中得到“access-control-allow-origin: *”header。

你的API密钥(Ocp-Apim-Subscription-Key)是私人信息,你不应该在客户端暴露它。

您应该使用该密钥从您的 Web 服务器生成访问令牌,并将其与您的所有操作请求一起使用(在授权 header 处发送)。

也请从上面的示例中删除它。