Closed. This question is
off-topic。它当前不接受答案。
想改善这个问题吗?
Update the question,所以它是
on-topic,用于堆栈溢出。
6年前关闭。
我正在研究一种身份验证解决方案,我想设置一个cookie。该站点使用Apache CXF,因此我假设我构造了Response并设置了“ Set-Cookie”标头。我正在寻找的是一个Java库,该库将允许我创建cookie,然后将其呈现为标头可接受的字符串。我看了
HttpCookie docs,但这似乎是关于从现有cookie字符串读取cookie。我在这里可能是错的,但构造函数似乎暗示情况是这样的:
public HttpCookie(String name, String value)
Constructs a cookie with a specified name and value.
什么图书馆可以满足我的需求?请不要关闭,因为它不是建设性的,我不是要最好的,也不是任何人喜欢的cookie创建库。我对可用的库有些困惑。使用cookie库的示例也很棒。我不介意自己设置所有内容,但如果可能的话,我想使用一个库。
一些评论:
几年前我使用Axis,所以我对CXF的了解不强(或不存在),但是服务的传输似乎与实际服务本身是分开的。所以这是一个HTTP传输问题吧?
因此,您正在使用J2EE容器,并且(以某种方式)可以访问HttpServletRequest和HttpServletResponse。
在这种情况下,我会问为什么不使用:
javax.servlet.http.Cookie
javax.servlet.http.HttpServletRequest.getCookie()
javax.servlet.http.HttpServletResponse.setCookie() or .addCookie()
请注意,使用Cookie来维护与服务相关的状态必须具有一些重复的代码,这些代码可以维护用于其他传输的相同状态。
如果我说的内容无关紧要,那么您如何进入CXF服务中,却又可以从http连接访问原始内容,以便可以直接对其进行写操作?如果您有一个ServletRequest / ServletResponse,那么您应该能够对它们进行自省,并发现它们实际上是http版本。如果您有流,我将搜索cxf服务文档并找出如何访问传输请求/响应机制,而不是尝试将标头的标题直接指定给流来纠正。
根据您在下面的问题。是的,它就像设置标头一样简单:
Set-Cookie: SID=31d4d96e407aad42; Path=/; Domain=example.com
但是,如果您使用的是我提到的Java Servlet API,则可以执行以下操作:
javax.servlet.http.Cookie cookie = new Cookie("SID","31d4d96e407aad42");
cookie.setDomain("example.com");
cookie.setPath("/");
response.addCookie(cookie);
如果您使用我不熟悉的CookieBuilder功能从Apache使用HttpComponents API,则类似。