AD

取域cookie的问题

之前用cookie有一个闭塞的想法就是cookie只能取自己工程的,和别的工程不能共享

但今天调试了一个域cookie之后,想法有了很大改变

例如在 km.bmcc**.cn 中设置了一个域cookie 值 LtpaToken=XXXX

在本地部署一个工程去直接取,使用 127.0.0.1 直接访问本地工程是拿不到km.bmcc**.cn的cookie值的,即使在同一个浏览器访问

但在本地host中将127.0.0.1配置成gemini.bmcc**.cn则可以直接通过访问gemini.bmcc**.cn 而拿到km.bmcc**.cn设置的域cookie LtpaToken

通过Cookie[] cookies = request.getCookies(); 直接拿到cookie值,通过遍历取cookie

具体代码如下:

<%@ page contentType="text/html;charset=utf-8"%>

<%@page import="java**.*"%>
<%@page import="java.io.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "****w3**/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    Cookie[] cookies = request.getCookies();
    String ltpaToken = "";
    String kmUserId = "";

    if (cookies != null) {
        for (int i = 0; i < cookies.length; i++) {

            //从Cookie中获取LtpaToken
            if ("LtpaToken".equals(cookies[i].getName())) {
                ltpaToken = cookies[i].getValue();
                System.out.println("取到LtpaToken="+ltpaToken);
//tomcat特殊设置(ltpaToken = cookies[i].getValue()+”==”;)
            }
        }
    }else{
        System.out.println("取不到LtpaToken!");
    }
    //判断LTPA Token
    if(ltpaToken!=null && ltpaToken.length()>0){
        if (ltpaToken == null || ltpaToken.trim().length() == 0)
            throw new Exception("The LtpaToken is null!");

        try {
            //连接超时时间
            System.setProperty("sun**.client.defaultConnectTimeout","20000");
            //读取超时时间
            System.setProperty("sun**.client.defaultReadTimeout","20000");

            //取SSO 应用保护的userToken的页面地址
            URL url = new URL("**kmpassport.bmcc**.cn/kmsso/index.jsp");

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDefaultUseCaches(false);
            conn.setUseCaches(false);
            conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
            //使用LtpaToken为cookie
            conn.setRequestProperty("Cookie", "LtpaToken=" + ltpaToken + "; path=/; domain=.bmcc**.cn");
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            String line = reader.readLine();
            reader.close();
            conn.disconnect();
            //解析用户id
            if (line != null && line.length() > 0
                    && line.indexOf("SSO_KM_USERID") != -1) {
                kmUserId = line.substring("SSO_KM_USERID".length() + 1);
                if (kmUserId.toLowerCase().equals("null"))
                    throw new Exception("userId return null!");
            } else {
                throw new Exception("wrong token format file!");
            }

        } catch (MalformedURLException e) {
            System.out.println("LtpaToken url error!");
        } catch (IOException e) {
            System.out.println("Read LTPA Token error!");

        }

        if (kmUserId!=null && kmUserId.length()>0){
            //获得的SSO用户ID,进行业务处理,并返回
            //.....

            return ;
        }
    }

%>
</body>
</html>
标签: 域cookie
分类: 日常记录
时间: 2015-05-05

相关文章

  1. php跨域cookie共享使用方法

    这篇文章主要介绍了php跨域cookie共享使用方法,需要的朋友可以参考下 A 机器所在的域:a1.main.com,A 有应用 main.php B 机器所在的域:b1.test.com,B 有应用 test.php ...
  2. 关于跨域取cookie的问题

    比如说a.com和b.com两个不同的域,我在a.com中登录后,在b.com中就可以显示登录状态. 一.首先是在a.com中登录时,保存cookie,具体就不说了,先只把保存和读取cookie的工具类写下(这里要特别注 ...
  3. Cookie跨域操作

    正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得. 1.可在同一应用服务器内共享方法:设置cookie.setPath("/"); 本机tomcat/webapp下面有 ...
  4. 跨域(cross-domain)访问 cookie (读取和设置)

    Passport 一方面意味着用一个帐号可以在不同服务里登录,另一方面就是在一个服务里面登录后可以无障碍的漫游到其他服务里面去.坦白说,目前 sohu passport 在这一点实现的很烂(不过俺的工作就是要把它做好啦, ...
  5. JavaScript操作Cookie详解

    这篇文章主要介绍了JavaScript操作Cookie详解,本文讲解了什么是Cookie.Cookie基础知识.Cookie常见问题.cookie 有两种清除方式.Cookie基础用法.Cookie高级用法等内容,需要的 ...
  6. C# HttpClient Cookie验证解决方法

    本文将详细介绍C# HttpClient Cookie验证解决方法,需要了解的朋友可以参考下 自实现的cookie 验证,远程取值的例子 以下代码配合HttpClient使用可以实现跨域(cookie的读写) //验证 ...
  7. js cookie详细描述

    什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值.& ...
  8. JavaScript 操作 Cookie

    什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值.& ...
  9. JavaScript 对Cookie 操作的封装小结

    通过本篇,您能了解到: 匿名函数 闭包的产生 JavaScript实现private 以及 public 访问权限 document.cookie 的操作 Javascript 没有 private , public 访 ...
  10. jquery cookie的用法总结

    本篇文章主要是对jquery cookie的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 jQuery cookie是个很好的cookie插件,大概的使用方法如下 example $.cooki ...
  11. 基于jquery的cookie的用法

    jQuery.cookie.js是个很好的cookie插件,大概的使用方法如下,需要的朋友可以参考下. example $.cookie('name', 'value'); 设置cookie的值,把name变量的值设为v ...
  12. PHP如何利用P3P实现跨域

    在开发中,我们碰到的跨域主要还是纠结在IE,页面中的IFRAME或者FRAME或者JS跨域的时候,IE有安全策略限制页面不带cookie,但是如果我们加上P3P,就没有这策略的限制.这也是P3P来突破跨域的可行前提 有别 ...
  13. cookie作用域

    当我们给网站设置cookie时,大家有没有发现在网站的其他域名下也接收到了这些cookie.这些没用的cookie看似不占多少流量,但如果对一个日PV千万的站点来说,那浪费的资源就不是一点点了.因此在设置cookie时, ...
  14. java对cookie的操作

    写cookie: Cookie cookie = new Cookie(Constants.cookie4SessionName, session.getSessionId()); cookie.setPath(&quo ...
  15. asp.net不同页面间数据传递的多种方法

    这篇文章主要介绍了asp.net不同页面间数据传递的多种方法,包括使用QueryString显式传递.页面对象的属性.cookie.Cache等9种方法 1. Get(即使用QueryString显式传递)方式:在url ...
  16. HTTP协议详解[转发]

    当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作 ...
  17. HTTP协议详解

    这个系列的文章用实例说话适合HTTP入门,转帖过来复习下,谢谢作者分享 HTTP协议 (一) HTTP协议详解 HTTP协议 (二) 基本认证 HTTP协议 (三) 压缩 HTTP协议 (四) 缓存 HTTP协议 (五) ...
  18. HTTP详解(2)-请求.响应.缓存

    1. HTTP请求格式 做过Socket编程的人都知道,当我们设计一个通信协议时,"消息头/消息体"的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干.HTTP协议传输的消息 ...
  19. linux之cut命令的用法

    cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对"行"来进行分析的,并不是整篇信息分析的 (1)其语法格式为:cut [-bn] [file] 或 cut [ ...