【发布时间】:2014-12-17 12:27:53
【问题描述】:
我们有一个使用 spring 4 的 websocket 服务器端实现。它已被配置为使用 spring 安全性进行 auth/authz。在客户端,我们使用 sockJS,当客户端与服务器在同一个域时,它可以完美运行。
通过这种方式调用 websocket……
socket = new SockJS("http://guest:guest@mydomain.org/MyWebSocketApp/tracker")
这最终会调用http://guest:guest@myinterestingdomain.org/MyWebSocketApp/tracker/info 来决定要使用的传输。这一切都很好。
但是,当使用来自不同域的客户端时,我看到凭据被删除了。所以,当这个客户端在不同的域上时,我看到正在进行的调用是: http://myinterestingdomain.com/MyWebSocketApp/tracker/info。我没有看到正在传递的凭据。因此,我收到 401 错误(未经授权)用户。我们在服务器端有 CORS 配置,并且还有:
Access-Control-Allow-Credentials "true"
有人可以帮帮我吗?我没有选择,我不明白为什么凭证被剥夺?这可能与CORS有关吗?
【问题讨论】:
标签: spring-security cors sockjs spring-websocket