回退

在公共互联网上,限制性代理可能会阻止 WebSocket 交互,要么是因为它们未配置为传递 Upgrade 标头,要么是因为它们关闭看起来处于空闲状态的长连接。

解决此问题的方法是 WebSocket 模拟 — 即首先尝试使用 WebSocket,然后退回到模拟 WebSocket 交互并公开相同应用级别 API 的基于 HTTP 的技术。

CORS

如果您允许跨域请求(请参阅 允许的来源),SockJS 协议将在 XHR 流和轮询传输中使用 CORS 进行跨域支持。 因此,除非检测到响应中存在 CORS 标头,否则将自动添加 CORS 标头。 因此,如果应用程序已经配置为提供 CORS 支持(例如,通过 Servlet 过滤器),则:

  • Access-Control-Allow-Origin:从 Origin 请求标头的值初始化。

  • Access-Control-Allow-Credentials:始终设置为 true

  • Access-Control-Request-Headers:从等效请求标头的值初始化。

  • Access-Control-Allow-Methods:传输支持的 HTTP 方法(参见 TransportType 枚举)。

  • Access-Control-Max-Age:设置为 31536000(1 年)。