代码之家  ›  专栏  ›  技术社区  ›  David Klempfner

CORS标头存在于/connect上,但不在/connect上

  •  0
  • David Klempfner  · 技术社区  · 5 年前

    我在WebSocket中使用信号器,我的 Startup 班级的 Configuration 方法:

            appBuilder.Map("/signalr", map =>
            {
                map.UseCors(CorsOptions.AllowAll);                
                map.RunSignalR(signalRConfig);
            });
    

    我注意到 /signalr/negotiate 首先调用,并且响应没有任何 Access-Control 标题:

    enter image description here

    但是, /signalr/connect 答复是:

    enter image description here

    为什么不呢 /信号员/谈判 那些标题也有吗?

    我的web应用程序正在运行 https://localhost:4200 .

    为什么 Access-Control-Allow-Origin 着手 https://localhost:4200 而不是 * ?

    根据 sourcecode ,它应该允许任何来源,而不仅仅是启动调用Signaler的webapp。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Brennan    5 年前

    CORS不适用于WebSocket请求。CORS中间件可能会错误地将这些头添加到WebSocket响应中(但这不会造成任何伤害,只是头)。

    对于协商请求,网络选项卡中应该有一个选项请求,其中将包含CORS头,您正在查看的网络请求是在成功的选项请求后发送的实际GET。