我有一个在 Azure 应用服务实例上运行的 .Net Core 应用程序。该应用程序是一个 WebAPI,也有一个 SignalR Hub。后端和中心都由 Azure 静态 Web 应用程序上托管的客户端使用。
Azure 静态 Web 应用程序自动将 SSL 证书添加到客户端,Azure 应用服务自动将 SSL 证书添加到 .Net 应用程序。
客户端和后端通信可以通过 SSL 完美运行,但是当尝试与 Hub SignalR 进行客户端通信时,会返回以下错误:
从源“https://client-app.5.azurestaticapps.net”获取“https://backend-service.azurewebsites.net/hub/shop/negotiate?negotiateVersion=1”的访问已被 CORS 阻止策略:对预检请求的响应未通过访问控制检查:响应中“Access-Control-Allow-Credentials”标头的值为“”,当请求的凭据模式为“include”时,该值必须为“true”。
该服务工作正常,直到几天前,在没有进行任何修改的情况下开始出现错误。
解决方案:
在 Azure Web App 配置面板中,转到 CORS 边栏选项卡(API 组内),然后在“请求凭据”部分中启用“启用访问控制允许凭据”选项。
可能原因:
就我而言,以上都不是有效的解决方案。由于凭据的使用在我的场景中至关重要,并且我的 CORS 策略配置良好。我还可以假设 Azure Static Web App 在请求上添加额外的标头。