首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HttpURLConnection addRequestProperty与" Cookie“一起导致逗号分隔Cookie字符串?

HttpURLConnection addRequestProperty与" Cookie“一起导致逗号分隔Cookie字符串?
EN

Stack Overflow用户
提问于 2019-04-04 09:50:48
回答 1查看 908关注 0票数 0

我必须模仿Java代码的浏览器行为。

在将请求发送到服务器之前,我必须对请求设置两个cookie。

我这样做:

代码语言:javascript
运行
复制
HttpURLConnection conn = ...
...
conn.addRequestProperty("Cookie", "IDS_SSO_ID=" + "onething");
conn.addRequestProperty("Cookie", "JSESSIONID=" + "otherthing"));
...
conn.close();

在服务器日志中,我看到'IDS_SSO_ID‘cookie被检索为"onething,JSESSIONID",这会导致错误。

注意,我没有访问服务器的权限,也没有服务器的源代码,我只有日志。

如何使用HttpURLConnection设置cookie?

因此,我创建了一个小演示;如果我使用“addRequestProperty”,那么就会发送一个不正确的cookie头:

代码语言:javascript
运行
复制
URL url = new URL("https://en0hphl04qcwvf.x.pipedream.net/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.addRequestProperty("Cookie", "JSESSIONID=akarmi123");
conn.addRequestProperty("Cookie", "IDS_SSO_ID=netudd321");

byte[] bytes = StreamUtils.copyToByteArray(conn.getInputStream());
System.out.println("response: " + new String(bytes));
conn.disconnect();

cookie头值是:JSESSIONID=akarmi123,IDS_SSO_ID=netudd321

如果我使用“setRequestProperty”并手动构造cookie标头,那么将发送一个正确的cookie头:

代码语言:javascript
运行
复制
conn = (HttpURLConnection) url.openConnection();

conn.setRequestProperty("Cookie", "JSESSIONID=akarmi123; IDS_SSO_ID=netudd321");

bytes = StreamUtils.copyToByteArray(conn.getInputStream());
System.out.println("response: " + new String(bytes));
conn.disconnect();

cookie头值是:JSESSIONID=akarmi123;IDS_SSO_ID=netudd321

奇怪的是,web中的许多资源(这里也是如此)推荐了我的第一种方法--对addRequestProperty(.)的多次调用:

How to set Cookies at Http Get method using Java

https://www.codota.com/code/java/methods/java.net.URLConnection/addRequestProperty

https://www.programcreek.com/java-api-examples/?class=java.net.HttpURLConnection&method=addRequestProperty

http://www.massapi.com/method/ad/addRequestProperty-2.html

但他们似乎错了..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 10:12:40

一种可能是通过执行以下操作来强制cookie字符串的正确连接:

代码语言:javascript
运行
复制
conn.addRequestProperty("Cookie", "JSESSIONID=" + "otherthing" + ";IDS_SSO_ID=" + "onething");

你所描述的行为在我看来是一种意外的行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55512910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档