回退
在公共互联网上,限制性代理可能会阻止 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 年)。