gpt4 book ai didi

java - Apache Http 组件 - 设置 cookie

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:24 25 4
gpt4 key购买 nike

我正在使用 Apache Http 组件为本地主机设置 cookie。当我返回 cookie 时,我得到输出:

[version: 0][name: testCookie][value: test][domain: http://localhost:9090/][path: /][expiry: Mon Aug 07 19:11:56 BST 2017]

这让我觉得 cookie 已经设置好了,但是当我检查 chrome 以查看它是否在 chrome://settings/cookies 中时,那里什么也没有。

    public Object makeCookie(String p) throws IOException, MalformedCookieException{

Calendar myCal = Calendar.getInstance();
myCal.set(2017, 07, 07);
Date theDate = myCal.getTime();
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("testCookie",p);
// Set effective domain and path attributes
cookie.setDomain("http://localhost:9090/");
cookie.setPath("/");
cookie.setExpiryDate(theDate);
cookieStore.addCookie(cookie);
// Set attributes exactly as sent by the server
cookie.setAttribute(ClientCookie.PATH_ATTR, "/");
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "http://localhost:9090/");
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();

return cookie;
}

我已经坚持了好几个小时了,我只是想不通为什么它没有存储在浏览器中

最佳答案

实际上您的代码只是创建客户端 cookie 存储,但不会将创建的 cookie 发送到任何地方。

根据维基百科 (https://en.wikipedia.org/wiki/HTTP_cookie),“cookie 是从网站发送并在用户浏览时存储在用户网络浏览器中的一小段数据。”

HttpClient 不是您需要的实体,因为它是客户端,而不是服务器。您可以使用它来执行对网站的 HTTP 请求,但它只是消费者,就像您的本地浏览器一样。所以即使你在你的客户端指定了cookie存储,它对你本地的浏览器也没有影响。服务器(比如网站)是向客户端发送 cookie 的人。

您代码中的 HttpClient 和您的本地浏览器是 2 个独立的客户端。他们可以从网站接收 cookie,但这 2 个客户端本身并不是网站。这就是 CloseableHttpClient 对象在这里无用的原因。此外,您不会在代码中使用它。它还可能会泄漏内存,因为您没有正确关闭它。

正如我已经说过的,您的代码只是创建了 cookie。所以你需要将创建的 cookie 发送给客户端。您甚至不需要创建 cookie 存储,您只需创建 cookie 本身。

因此您需要使用 Servlet API 创建一个简单的 Web 应用程序。然后,您可以将创建的 cookie 附加到所需 HTTP 请求处理程序中的 HttpServlerResponse 对象。您可以这样做(SpringMVC 示例):

@RequestMapping(value = "/", method = RequestMethod.GET, produces = "text/html")
public String index(HttpServletResponse response) {
// no prepareCookie implementation here
Cookie myCookie = prepareCookie();
response.addCookie(myCookie);
// view name
return "index";
}

关于java - Apache Http 组件 - 设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35831332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com