弱弱的问一个关于Cookie的问题

x-teamer团队 2009-06-13 08:57:39
PC上的Cookie是怎么创建起来的?

需要服务端告知吗?

现在用HttpClient做模拟IE登陆, 认为Cookie是从Sever端的报文头获得的, 但实际上不是这么回事。


想问一下Client端如果要创建Cookie,依据是什么?比如sina的登陆, 创建的Cookie是:

SINAGLOBAL
121.77.131.181.303561228566931361
sina.com.cn/
1104
2654992128
30744557
3875976608
30010302
*

我如何知道要创建这样一个Cookie呢!

...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kokobox 2009-06-13
  • 打赏
  • 举报
回复
要让服务器得到cookie,请求的过程中一定要附带过去。找了一段代码如下:


HttpClient httpclient=new HttpClient();
httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);//RFC_2109是支持较普遍的一个,还有其他cookie协议
HttpState initialState = new HttpState();
Cookie cookie=new Cookie();
cookie.setDomain("www.balblabla.com");
cookie.setPath("/");
cookie.setName("name");
cookie.setValue("1111111111");
initialState.addCookie(cookie);
httpclient.setState(initialState);

kokobox 2009-06-13
  • 打赏
  • 举报
回复
要让服务器得到cookie,请求的过程中一定要附带过去。找了一段代码如下:


HttpClient httpclient=new HttpClient();
httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);//RFC_2109是支持较普遍的一个,还有其他cookie协议
HttpState initialState = new HttpState();
Cookie cookie=new Cookie();
cookie.setDomain("www.balblabla.com");
cookie.setPath("/");
cookie.setName("name");
cookie.setValue("1111111111");
initialState.addCookie(cookie);
httpclient.setState(initialState);

kokobox 2009-06-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 ostrichmyself 的帖子:]
PC上的Cookie是怎么创建起来的?

需要服务端告知吗?

现在用HttpClient做模拟IE登陆, 认为Cookie是从Sever端的报文头获得的, 但实际上不是这么回事。


想问一下Client端如果要创建Cookie,依据是什么?比如sina的登陆, 创建的Cookie是:

SINAGLOBAL
121.77.131.181.303561228566931361
sina.com.cn/
1104
2654992128
30744557
3875976608
30010302
*

我如何知道要创建这样一个Cookie呢!
[/Quote]


cookie 你可以想做是一个文件存储一个字符串 在IE自己能够找到的地方存放。是存储在客户机上的一个文件。 你可以这样简单的理解。

然后剩下的就是如何存储这个东西到客户机上,可以用response(对于java来说),也可以用js,按照他的格式。

当你用URLConnection请求服务器的时候,其实这是一个新的请求是不附带cookie的,而服务器要判断请求来的数据是否存在cookie信息的话,你需要附带cookie属性

例如:


java.net.URL url = new java.net.URL("http://bbs.abcbit.com/viewthread.php?tid=214878&extra=page%3D1/");

如果他们需要记录cookie的话,应该把cookie信息带过去,

因为这样请求等于又重新建立连接,没有传递和记载cookie

你应该附带cookie,例如:
URLConnection uc = new URL(url).openConnection();
uc.setRequestProperty("Cookie", "xxx=xxxxxxx;xxx=xxx");



参照这个帖子,我很久以前回复的:http://topic.csdn.net/u/20090211/11/0c087f5b-df0f-4fd8-b4d1-e75773a32be2.html


临远 2009-06-13
  • 打赏
  • 举报
回复
response生成出来的。
Js也可以生成。
x114944880 2009-06-13
  • 打赏
  • 举报
回复
又是cookie
gaobaiy 2009-06-13
  • 打赏
  • 举报
回复
cookie的意思是小甜饼,也可以理解成服务器给客户端的小饼。下面是个例子:
假如去某商店购物,当你是第一次去时,商店觉得你是一个可以发展的客户,于是给你发张标记卡,并告诉你,
下次来带着这张卡,买东西打8拆。
以后你去这家店时,出示卡片,店家就能认识你了,然后给你打拆。

Cookie的作用和这个相类的,创建的时机也是这样,而为什么要创建,是因为需要用来满足某个业务需求。比如你登录CSDN时,有个选择,两次内不登录。如果你有这样需求,并选择了那个项,那服务器就知道,现在要给你一个Cookie,
记录你用户名:

Cookie cookie = new Cookie("user","000");
cookie.setPath("/csdn/user");//在服务器中这个PATH下的应用可以获得此COOKIE
cookie.setMaxAge(60*60*24*7);//COOKIE在客户端的有效期为一周
response.addCookie(cookie);


当你进入登录成功的页面,HTTP响应会通过在头文件中加入COOKIE信息,浏览器获取到这个HTTP响应后,创建
本地COOKIE并保存。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧