java cookie p3p_P3P script src 解决cookie存取的跨域问题 java 终极解决办法

最近在做一个项目,我的网站是www.a.com,但是需要取到www.b.com网站的cookie,折腾了很久,在同事的合作下。总算搞定了。

我是用java做的, 首先在www.a.com/a.vm文件中加入这句话:

src中的链接可以是b中的一个页面或者一个Action,都可以,我是用一个Action的。在b.com的这个action中,我的代码如下:

public ActionForward getSidAndUserid(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

String cartSid = this.getCartSid(request, response);

UserSession userSession = this.getUserSession(request, response);

CartServiceDelegate delegate = new CartServiceDelegate();

int basketSize = delegate.getBasketSize(userSession, cartSid);

StringBuffer buffer = new StringBuffer();

buffer.append("iBacketItemsNumber=" + basketSize + ";");

PrintWriter out;

response.setHeader("P3P","CP=/"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM

CNT PRE LOC/"");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

try {

out = response.getWriter();

out.print(buffer.toString());

} catch (IOException e) {

log.error("",e);

}

return null;

}

这样就可以得到想要的结果。

在a.vm文件中,若查看源代码的话,会看到

然后a.vm中要取到这个数据可以写如下代码:

这样就可以得到想要的数据了。

附: 我在Action中加入以下代码的原因是: response.setHeader("P3P","CP=/"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC/""); 因为在IE7中(IE6和Firfox都没有问题,只有IE7以上版本存在此问题),由于浏览器的隐私等级在IE7中默认为“中”,它会阻止保存可用来联系您的信息而没有您的明确同意的第三方Cookie。因此无法实现跨域取cookie的功能,除非用户手动把浏览器的隐私等级在IE7中默认为“低”。而以上的那行代码就可以解决这个问题,其中用到的是P3P技术。    写此篇文章,希望能对大家有所帮助。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值