java - 在 Apache Components HttpClient 中设置 cookie 但无法在 HttpServletRequest 中的服务器上检索
问题描述
我正在向 Closeable HttpClient 对象添加一个 cookie,并尝试在服务器上检索它,如下所示。
BasicClientCookie mCookie = new BasicClientCookie("myCookie", "dummyValue");
mCookie.setDomain(".myCookie.net");
mCookie.setPath("/");
mCookie.setSecure(true);
mCookie.setAttribute(ClientCookie.PATH_ATTR, "/");
mCookie.setAttribute(ClientCookie.DOMAIN_ATTR, ".myCookie.net");
mfCookies[0] = mCookie;
BasicCookieStore basicCookieStore = new BasicCookieStore();
basicCookieStore.addCookies(mfCookies);
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(
RequestConfig.custom().setConnectTimeout(connectionTimeOut).build())
.setDefaultCookieStore(basicCookieStore)
.setConnectionManager(poolingConnectionManager)
.build();
我使用 HttpGet 对象连接到本地 url,如下所示
httpGet = new HttpGet(myLocalUrl);
httpResponse = httpClient.execute(httpGet);
HttpClient 命中本地 url 正确连接到本地主机上的 Rest 端点,但是当我尝试使用下面的代码检索 cookie 时
(HttpServletRequest) request.getCookies() ;//returns null
我得到空值。
有人可以帮忙吗 - 我正在使用 spring boot 来创建一个 Rest 端点(服务器)并尝试检索 cookie。
解决方案
我自己想通了,实际上我在连接到 http://localhost:8080/... 时将域设置为 .myCookie.net,如果在本地运行,则 localhost 应该通过 dns 解析为域名所以在这种情况下 .myCookie.net 应该映射到文件 /etc/hosts 文件中的 localhost。例如在 etc/hosts 文件中设置 127.0.0.1 www.myCookie.net并点击 url http: //www.myCookie.net/ ..。
如果 httpclient 连接的 url 和 cookie 中设置的域不匹配,httpclient 将丢弃 cookie。
推荐阅读
- c - 如何修复结构的分配大小
- javascript - 如何在图像画布上创建褪色光标轨迹?
- bash - 使用 xmlstarlet 从 xml 中提取元素
- java - 当我将 MainActivity 拆分为多个类时,Android 应用程序崩溃
- linux - 在 Linux 上部署 asp.net core 应用程序 - 重定向 url 问题
- python - Python编码base64不期望正确的结果?
- php - 正则表达式检查给定字符之前和之后的第一个字符
- javascript - 天才聊天杂乱无章的消息
- ios - 如何在不包含依赖项的情况下获取 .framework 文件
- excel - 在其他模块中访问表单变量时会自动调用 UserForm_Initialize()