无需打开此域即可从域中获取Cookie

时间:2012-01-27 10:23:39

标签: java cookies

我正在使用java构建一些服务,并且我在重定向方面遇到了一些问题。

我在domainA中有登录表单。登录后,我想在其他域 domainB 中设置cookie。

现在,当我在一段时间后打开 domainA 时,我想检查 domainB 中是否有Cookie sen,但我不想重定向用户 domainA domainB

是否有可能将JAVA中的请求从 domainA 发送到 domainB 以检查是否有Cookie?

我正在尝试:

            try {

                URL url = new URL(rURL + "checkCookie" );
                InputStream response2 = url.openStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(response2, "UTF-8"));


                for(String line; (line = reader.readLine()) != null;){
                    responsePool += line;
                }

            }catch(Exception e2){
                e2.printStackTrace();
            }

            logger.info(responsePool);

并且在 domainB 中获取Cookie的代码只是:

try {

        Cookie[] cookies = request.getCookies();

        for (int i = 0; i < cookies.length; i++) {
            Cookie c = cookies[i];

            if (c.getName().equals("xvz")) {
                cookieSCS = c.getValue();
            }
        }

        if(cookieSCS == null || cookieSCS == ""){
            cookieSCS = "there is no cookie";
        }

    } catch (Exception e) {

        cookieSCS = e.toString();

    }

但是我得到java.lang.NullPointerException并且我明白这种方法不会给我一个cookie,但是有没有可能从 domainB 获取cookie而无需在 domainB中打开浏览器

1 个答案:

答案 0 :(得分:0)

我认为您不能以这种方式阅读跨域Cookie。通常,通过在domainA和domainB的父级上设置cookie来处理这种情况(如果你有类似的东西)。

因此,如果父级是www.example.com并且您有两个网域math.example.comsci.example.com,则应该在.example.com域上设置Cookie。

开头的.(点)是必需的,以便将Cookie视为所有子域的通配符。