Edge 143+中Azure DevOps仪表板小部件触发ERR_BLOCKED_BY_LOCAL_NETWORK_ACCESS_CHECKS错误的问题求助
Edge 143+中Azure DevOps仪表板小部件触发ERR_BLOCKED_BY_LOCAL_NETWORK_ACCESS_CHECKS错误的问题求助
我正在开发一款Azure DevOps仪表板小部件,原本可以正常通过ADO API获取流水线信息,但从12月9日(Edge 143+在12月4日推送更新之后)开始,突然遇到了跨域阻塞问题,卡了好几天没解决,来求助大家!
我要调用的目标API是:
GET https://dev.azure.com/{org}/{project}/_apis/build/builds ?definitions=123 &top=10 &statusFilter=completed &api-version=7.1
具体错误信息
跨域策略拦截提示:
Access to fetch at 'https://dev.azure.com/...' from origin 'https://[publisher].gallerycdn.vsassets.io' has been blocked by CORS policy:
Permission was denied for this request to access theunknownaddress space.
控制台输出的错误代码:
ERR_BLOCKED_BY_LOCAL_NETWORK_ACCESS_CHECKS
我的开发情况
这个小部件是严格按照微软官方文档开发的(文档发布时间远早于这次Edge更新),核心逻辑是用azure-devops-extension-sdk和官方API客户端请求数据,代码结构如下:
import * as SDK from "azure-devops-extension-sdk"; import { getClient } from "azure-devops-extension-api"; import { BuildRestClient } from "azure-devops-extension-api/Build"; class XWidget extends React.Component { async componentDidMount() { await SDK.init(); await SDK.ready(); const buildClient = getClient(BuildRestClient); // 就是这行代码在Edge 143+里触发ERR_BLOCKED_BY_LOCAL_NETWORK_ACCESS_CHECKS错误 const builds = await buildClient.getBuilds( projectName, [pipelineId], null, null, null, null, null, null, null, null, null, null, 10 ); this.setState({ builds }); } }
对应的扩展清单文件(vss-extension.json)也完全符合官方要求:
{ "manifestVersion": 1, "id": "Xwidget", "version": "0.14.0", "name": "XWidget", "scopes": [ "vso.build", "vso.build_execute", "vso.project", "vso.work", "vso.dashboards" ], "contributions": [ { "id": "XWidget", "type": "ms.vss-dashboards-web.widget", "targets": ["ms.vss-dashboards-web.widget-catalog"], "properties": { "name": "X Pipeline Status", "description": "Monitor X pipeline runs", "uri": "dist/widget.html", "supportedSizes": [{ "rowSpan": 2, "columnSpan": 2 }], "supportedScopes": ["project_team"] } } ] }
已尝试的方案
- 试过
azure-devops-extension-api里的所有相关客户端(Build、Core、WorkItemTracking),想找官方提供的变通方案,但没有收获; - 也尝试过直接用原生
fetchAPI请求,结果和用官方客户端完全一样,还是被拦截; - 没法搭建后端或者Azure函数转发请求,因为公司管理层不允许这种方案。
另外这个问题只出现在Chrome和Edge 143+里,Firefox下完全正常,这也让我更加困惑...
几个核心疑问
- 有没有我漏掉的Azure DevOps Extension SDK客户端侧变通方案?
- 微软有没有确认Edge 143+这次更新破坏了Azure DevOps扩展的问题?我翻了官方文档和bug库都没找到相关信息;
- 为什么官方的小部件开发指南里没提到这个问题?指南里用的就是我现在的代码模式啊;
- Azure DevOps团队有没有计划给API添加
Access-Control-Allow-Private-Network: true响应头来解决这个问题? - 生产环境下的小部件有什么合规的解决方案?我总不能要求所有用户都切换到Firefox或者修改Edge企业策略吧;
- 有没有其他开发者遇到过同样的问题?或者知道Azure Marketplace里的小部件是怎么规避这个问题的?
我已经在微软开发者社区发了求助帖但还没收到回复,真心希望能得到大家的帮助,谢谢各位了!




