SignalR Websocket 允许起源通配符?

问题描述 投票:0回答:1

使用 dotnet core 3.1。在SignalR的文档中,建议实现WebsocketOptions的AllowedOrigins属性。我们有一个多租户解决方案,将每个子域添加到AllowedOrigins 是不可行的。我用谷歌搜索并尝试使用通配符解决方案,如下例所示,但没有任何效果。所以,我希望这里有人能够弄清楚一些事情,或者可以告诉我“这是不可能的”。目前我正在劫持另一个中间件来进行 Origin 标头检查作为后备。

websocketOptions.AllowedOrigins.Add("https://*.exampledomain.com")
websocketOptions.AllowedOrigins.Add("https://exampledomain.com")
websocketOptions.AllowedOrigins.Add("exampledomain.com")
websocketOptions.AllowedOrigins.Add("http://*.exampledomain.com")
.net asp.net-core-signalr
1个回答
0
投票

这也可能是原因

尝试使用通配符解决方案,如下例所示,但是 没有任何效果。

来自 signalR 文档 需要以下 CORS 策略:

• 允许特定的预期来源。允许任何来源是可能的,但不安全或不推荐。

• 必须允许 HTTP 方法 GET 和 POST。

• 必须允许凭据才能使基于 cookie 的粘性会话正常工作。即使不使用身份验证,也必须启用它们。

但是,在链接中,我们可以知道尝试将通配符与凭据一起使用是否会导致错误。 我们可以从此链接知道此错误的原因:在设置了凭据标志的情况下尝试了 CORS 请求,但服务器配置为使用通配符(“*”)作为 Access-Control-Allow-Origin 的值,这不允许使用凭据。

© www.soinside.com 2019 - 2024. All rights reserved.