背景:
我正在本地开发一个前端应用程序,调用跨域的API等(从localhost开发服务器到我们内部网络中的另一台服务器)。由于我们的局域网是隔离的,后端服务器启用了CORS,这不会导致安全问题;但在生产环境中情况不同(CORS被禁用)。
我们在应用程序中引入了WebSocket连接,并为了使用授权而添加了cookie检查。 (XHR请求通过Authorization头授权,不使用cookie;但它们实际上可以使用;WebSocket
接口仅允许一组有限的标头,并且如果我们不通过WS消息进行授权,则cookie似乎是唯一合理的选项;事实上,我无法找到是否可以实现基本HTTP身份验证而不使用浏览器标准提示,以及如何做到这一点)
问题:
尽管这在生产中实际上可以工作(当前端和后端位于同一个域时),并且cookie在握手请求中以Cookie
头的形式发送(代码很简单:获取授权令牌后仅需设置cookie),但在开发环境中(localhost + 后端在另一个域名下)不起作用:握手中根本没有Cookie
头。 上面的链接显示XHR需要withCredentials
选项才能尝试跨域传递cookie;不过,我还没有找到WS是否有类似的东西的明确答案。 这里的一个类似问题的作者只是假设没有这样的东西,但真的是这样吗?