我在请求中有以下HTTP标头,我想从中提取JSESSIONID它:
Accept=application/json
Accept-Encoding=gzip
deflate,Accept-Language=en-us
Connection=keep-alive
Content-Length=0
Content-Type=application/json
Cookie=JSESSIONID=ss0ox8w99o9142b73rssvc0r
Host=localhost:8080
User-Agent=NFA_QA/34 CFNetwork/720.5.7 Darwin/14.5.0 (x86_64)
Run Code Online (Sandbox Code Playgroud)
我使用ContainerRequestContext如下:
@Override
public void filter(final ContainerRequestContext requestContext) throws IOException {
System.out.println("***HEADER VALUE**: " + requestContext.getHeaderString("Cookie"));
}
Run Code Online (Sandbox Code Playgroud)
获得结果:
JSESSIONID=zv71od6l2fd41hv6yf0980khy
Run Code Online (Sandbox Code Playgroud)
和:
@Override
public void filter(final ContainerRequestContext requestContext) throws IOException {
Map<String, javax.ws.rs.core.Cookie> clientCookie = requestContext.getCookies();
System.out.println("Client Cookie Map: " + clientCookie);
}
Run Code Online (Sandbox Code Playgroud)
获得结果:
Clinet Cookie Map: {JSESSIONID=JSESSIONID=1of1x5u1s1l4hdxfg2azlep42}
Run Code Online (Sandbox Code Playgroud)
JSESSIONID从请求中提取的最佳方法是什么?
首先,REST和会话标识符在同一个句子中听起来不太好.
在小号在REST意味着无状态,而不是状态.在REST应用程序中,会话状态必须由客户端管理,而不是由服务器管理.因此,不得有任何会话标识符.
我想你正在寻找以下解决方案:
Cookie cookie = requestContext.getCookies().get("JSESSIONID");
String value = cookie.getValue();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17802 次 |
| 最近记录: |