Cookies 如何在websocket端点内获取cookie值
我正在应用程序中使用基于JavaEE7的Websocket API 我需要访问websocket端点内Cookie中设置的值Cookies 如何在websocket端点内获取cookie值,cookies,websocket,java-ee-7,Cookies,Websocket,Java Ee 7,我正在应用程序中使用基于JavaEE7的Websocket API 我需要访问websocket端点内Cookie中设置的值[注释一:@ServerEndpoint(“/websocket”)]。我该怎么做 @onOpen()方法存在,当建立到此websocket端点的连接时,将自动调用该方法。我想访问这个方法中的cookies值 我知道如何在servlet或JSP中实现这一点,但我对WebSocket还不熟悉 请帮我做这个。提前感谢。通过@ServerEndpoint(configurator
[注释一:@ServerEndpoint(“/websocket”)]
。我该怎么做
@onOpen()
方法存在,当建立到此websocket端点的连接时,将自动调用该方法。我想访问这个方法中的cookies值
我知道如何在servlet或JSP中实现这一点,但我对WebSocket还不熟悉
请帮我做这个。提前感谢。通过
@ServerEndpoint(configurator=MyConfigurator.class)
技术访问请求参数
看,因为它的技术非常相似。虽然Joakim的回答确实提供了一个正确方向的提示,但我认为它并没有完全回答这个问题,或者至少可以补充 为了检索cookie的值,您必须获取握手请求对象的头,并查找名为“cookie”的头。您的modifyHandshake实现将类似于:
public class MyEndpointConfigurator extends ServerEndpointConfig.Configurator {
@Override
public void modifyHandshake(ServerEndpointConfig config,
HandshakeRequest request,
HandshakeResponse response)
{
Map<String,List<String>> headers = request.getHeaders();
config.getUserProperties().put("cookie",headers.get("cookie"));
}
}
公共类MyEndpointConfigurator扩展了ServerEndpointConfig.Configurator{
@凌驾
公共无效修改握手(ServerEndpointConfig配置,
握手请求,
握手(应答)
{
Map headers=request.getHeaders();
config.getUserProperties().put(“cookie”,headers.get(“cookie”);
}
}
这真是太棒了。我可以使用您所演示的方式成功地获取HttpSession。但我的目的是获取cookies,而不是HttpSession;我尝试过同样的场景,但没有成功this.httpCookie=(HttpSession)config.getUserProperties().get(httpCookie.class.getName());'我不知道如何通过Configurator的modifyHandshake()方法将此HttpCookie放入EndPointConfig。帮我做这件事。这实际上与原文不符question@gshauger这确实是一个重复的问题,因此引用了关于访问HttpSession的另一个答案(传统上,Cookies是从JEE应用程序中访问的)@JoakimErdfelt感谢链接到另一个答案。那里有丰富的信息。