我需要为 "Application Insights for web pages" 遥测调用创建代理端点(Azure Function Proxy 无法调用 CORS 选项)

I need to make a proxy enpoint for "Application Insights for web pages" telemetry calls (Azure Function Proxy fails CORS Options call)

我有一个带有 Application Insights for web pages and Azure Function api. Application Insights is sending telemtry via calls to https://dc.services.visualstudio.com/v2/track 的 html 应用程序。我希望此流量经过以下 urls 之一:

基本上,我需要在 API 中创建一个代理端点。我尝试了 Azure Function Proxies,但到目前为止运气不佳,我收到 HTTP 代码 400 - 错误请求。

更新,我试过的 Azure Function Proxy 是这样的:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "Application insights": {
            "matchCondition": {
                "route": "telemetry",
                "methods": [
                    "GET",
                    "POST",
                    "OPTIONS"
                ]
            },
            "backendUri": "https://dc.services.visualstudio.com/v2/track",
            "responseOverrides": {
                "response.headers.Access-Control-Allow-Origin": "*"
            }
        }
    }
}

更新

@naile 提供了解决方案。默认情况下,Azure 函数代理不代理 CORS 调用。您应该导航到 "Platform Features" => "CORS" 并删除您在那里看到的所有内容(请参阅接受的答案中的屏幕截图)。

默认包含

"https://functions.azure.com",  
"https://functions-staging.azure.com",  
"https://functions-next.azure.com"

删除这些,Azure Function Proxy 现在也应该转发 CORS 调用。

在您的 Azure 函数模板中,它应该如下所示

"cors": {
    "allowedOrigins": [], //this should be empty array
    "supportCredentials": false
}

我最近遇到了这个问题。事实证明,OPTIONS 请求 使用默认的 azure 函数 CORS 设置进行代理。您看到的 400 来自不允许您的来源的 azure 函数。

简单修复:删除 CORS 设置下的所有条目,您可以代理 OPTIONS 请求。