cookie 跨域,什么是跨域呢,为什么需要跨域呢?
www.a.com 下有 a.html页面
www.b.com 下有b.html这个地址
1.例如a.html页面在域下,a.html页面中有个img标签<img src="www.b.cm/b.html"/>
当a.html页面打开时,就会访问b.html。这里b.html接受到请求然后向HttpServletResponse add 名为uid的cookie,这个uid就叫做第三方cookie。在firfox下是支持跨域的,也就是说你用firfox的话这时你浏览器里就有一个domain为b.com的cookie uid。当访问a.html页面,b.html也就能接收uid这个cookie。 没什么好说的......
在ie下就不行了,ie默认是不允许第三方cookie的,也就是uid这个cookie并没写入。加个p3p的head就可以成功向ie写入第三方cookie了。
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\"");
(ie下查看cookie \Documents and Settings\{userName}\Local Settings\Temporary Internet Files\ cookie开头的文件,\Documents and Settings\{userName}\Cookies\下的并不即时)
2.javax.servlet.http.Cookie中有个 setDomain(String domain)方法,此方法并不能指定不同域。
例如:a.html想写个domain为b.com的cookie是办不到的。
setDomain(...)是用来指定cookie属于同一个域下的子域。
例如:a.html中设定setDomain("bbs.a.com/")是可行的,而setDomain("b.com/")是不可行的。
简要理解,欢迎指正。
分享到:
相关推荐
解决跨域页面访问问题的办法是,在子系统的登录代码中加入 P3P 的认证,即允许第三方读取 cookie,这样 cookie 值才能被浏览器正确的读取并保存。P3P(Platform for Privacy Preferences)是一种隐私保护协议,允许...
通过这种方式,可以解决在IE浏览器中由于P3P隐私设置导致的iframe跨域cookie丢失问题,进而解决session失效导致的用户频繁重新登录的问题。这个方法在技术上是可行的,但需要网站管理员操作,确保P3P声明符合实际的...
对于Cookie,可以使用P3P(Platform for Privacy Preferences Project)头来跨域设置Cookie。 5. **安全性考虑**:在实现SSO时,必须重视安全问题。包括但不限于:使用HTTPS加密传输,防止中间人攻击;定期刷新票据...
P3P头的`CP`参数表示饼干(Cookie)策略,这里的`ALL ADM DEV PSAi COM OUR OTRo STP IND ONL`是一个特定的策略字符串,告诉浏览器这个网站可以接受第三方的Cookie,从而解决IE在iframe中处理Session的问题。...
这可能需要在响应头中添加`Set-Cookie`,或者使用`P3P`政策来允许跨域cookie。 3. **手动传递JSESSIONID**: - 当用户在不支持或禁用cookie的环境下,或者在不同浏览器间切换时,JSESSIONID需要通过URL查询参数...
3. **跨域通信**:由于Cookie有同源策略限制,SSO需要处理跨域问题,这可能通过共享Cookie(如P3P协议)或使用JSON Web Tokens (JWT)等方法实现。 4. **协议实现**:例如CAS(Central Authentication Service)、...