perl 获取cookie
来源:互联网 发布:淘宝流程入门教程 编辑:程序博客网 时间:2024/05/22 03:31
<pre name="code" class="sql">Cookie的含义是“服务器送给浏览器的甜点”,即服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的Cookie通过请求信息带到服务器端。下面的Servlet展示了Cookie的功能。view plain public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String option = request.getParameter("option"); if ("show".equals(option)) { //获得请求信息中的Cookie数据 Cookie[] cookies = request.getCookies(); if (cookies != null) { //找出名称(键)为“cool”的Cookie for (int i = 0; i < cookies.length; i++) { if ("cool".equals(cookies[i].getName())) { out.println("<h2>" + cookies[i].getName() + ":" + cookies[i].getValue() + "</h2>"); } } } } else if ("add".equals(option)) { //创建Cookie对象 Cookie cookie = new Cookie("cool", "yeah!"); //设置生命周期以秒为单位 cookie.setMaxAge(20); //添加Cookie response.addCookie(cookie); } 该Servlet对应的url-pattern为/testCookie当浏览器请求地址“.../tst/testCookie?option=add”时,该Servlet创建一个Cookie对象,存储的键-值对为“cool”-“yeah”。通过response的addCookie方法将该Cookie信息添加到相应信息中。需要注意的是cookie的setMaxAge方法用于设置该cookie生命周期,单位是秒,如果过了这个期间,Cookie将失效。setMaxAge方法的参数如果为负值则表示该Cookie将在浏览器关闭时过期,如果参数为0则表示立刻删除该Cookie。访问该地址,对应的请求和响应的HTTP信息为:请求:GET /tst/testCookie?option=add HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, **Accept-Language: zh-cnUA-CPU: x86Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)Host: 192.168.5.100:8080Connection: Keep-AliveCookie: cool=yeah!响应:HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: text/html;charset=ISO-8859-1Content-Length: 21Date: Sun, 29 Jun 2008 06:15:26 GMT<h2>cool:yeah!</h2>注意,请求协议头中用于携带cookie信息的格式。Cookie可以用于保持用户的会话状态,但Cookie信息保存在客户端,存在较大的安全隐患,且一般浏览器对Cookie的数目及数据大小有严格的限制。在Web应用中,一般情况下通过HttpSession对象保持会话状态。每个Cookie都可以设置一个最大生命周期,如果设置了该值,浏览器将会把该Cookie写到硬盘上。但如果没有设置Cookie的最大生命周期,这样的Cookie称为会话Cookie,它存在内存中,当浏览器关闭时,该Cookie消失。(session实现机制)[root@dr-mysql01 test]# cat a7.pl use LWP::UserAgent;use HTTP::Cookies; my $ua = LWP::UserAgent->new();#my $req = HTTP::Request->new(GET => 'https://www.zjcap.cn');#my $req = HTTP::Request->new(GET => 'http://blog.csdn.net/zhaoyangjian724/article/details/46792127');my $req = HTTP::Request->new(GET => 'http://www.renren.com/');my $cookie_jar=HTTP::Cookies->new(file =>"cookie",autosave => 1, ignore_discard => 1);$ua->cookie_jar($cookie_jar);my $res = $ua->request($req);if ($res->is_success){ print "Login success.\n"; print $res->as_string;}else{ die "Login failed.\n";} [root@dr-mysql01 test]# cat cookie #LWP-Cookies-1.0Set-Cookie3: _r01_=1; path="/"; domain=.renren.com; path_spec; expires="2016-07-02 03:13:35Z"; version=0Set-Cookie3: anonymid=ibu6y5e5-j3hm8b; path="/"; domain=.renren.com; path_spec; expires="2020-07-06 03:13:35Z"; version=0Set-Cookie3: depovince=GW; path="/"; domain=.renren.com; path_spec; expires="2015-07-11 03:13:35Z"; version=0Set-Cookie3: jebecookies=54224c21-f138-4f37-b25c-6e125b3003e5|||||; path="/"; domain=.renren.com; path_spec; discard; version=0Set-Cookie3: JSESSIONID=abc90y38vLTeZ7GX3PR5u; path="/"; domain=www.renren.com; path_spec; discard; version=0JSESSIONID=abc90y38vLTeZ7GX3PR5u; 这就是SESSIONID 加密过的 session里面有保存用户的信息的, 浏览器发送cookie到web服务器, 服务器上的程序收到cookie后, 根据session id 去找相应的session找到后就跳过登陆过程, 读取用户相关信息。
0 0
- perl 获取cookie
- 【perl】使用LWP获取带cookie验证的HTTPS网页
- perl 使用cookie
- perl 读取cookie
- perl load cookie方法
- perl 加载cookie 请求
- 创建Cookie、获取Cookie
- 获取Cookie
- 获取Cookie
- 获取cookie
- perl获取机器ip
- PERL: 获取system输出
- perl获取当前环境
- Perl 获取cpu使用率
- perl 获取网页内容
- perl 获取路径Cwd
- Perl获取数组长度
- perl获取AppAnnie数据
- Android使用Https
- 全透明状态栏,导航栏
- 011 Complaint
- Python下opencv使用笔记(三)(图像的几何变换)
- iOS自带的分享功能
- perl 获取cookie
- NSString的compare方法注意事项
- 解题报告:乘积最大子序列
- <一>重温Hibernate many to many映射
- 9针串口管脚定义
- [问题记录]编译时出现 initializer element is not constant 错误
- Directional Shadow Details 平行光阴影细节
- 数据库操作中是什么在影响系统的性能
- Xutils的get请求后,总是返回相同数据的问题解决方案