前言
首先要指出的是,这里的跨域访问,应该细分为跨域页面访问和跨域信息采集。现在具体来分析说明一下
跨域页面访问
原因
这种方式主要出现在多个系统集成的情况下,主系统以iframe或frameset的方式将其他子系统的页面嵌进来。由于安全原因浏览器会阻止iframe或frameset的cookie,由于SESSION需要以内存cookie的方式存储id到客户端,因此SESSION将一起失效。
PS:如果在嵌入页面内部操作的话,不会有跨域问题,该问题仅在多处嵌入的情况下发生.
解决办法
在子系统的登录代码中加入P3P的认证,即允许第三方读取cookie,这样cookie值才能被浏览器正确的读取并保存。代码如下:
response.setHeader("P3P","CP=CAO PSA OUR");
跨域信息采集
原因
这种方式主要出现在Web2.0利用AJAX采集跨域系统数据的时候,如采集气象网站的天气预报信息。出现的主要原因是使用AJAX方式跨域调用,同样出于安全性考虑XMLHttpRequest是禁止跨域访问的,否则你以为采到的是一条文本信息,而实际是一条可执行JS木马的话,你的网站可想而知。
解决办法
- 利用script脚本访问跨域url。该方法需要跨域系统代码可控,输出格式为script脚本。客户端可直接对脚本进行操作。
- 服务器代理模式。通过将请求发送至服务器,由服务器代理访问跨域系统,再将输出的内容返给客户端。在Java中可使用apache的HttpClient。
分享到:
相关推荐
跨域问题是指由于浏览器的同源策略限制,一个域下的网页(域、协议、端口都相同)的JavaScript代码不能访问另一个域下的资源。这个策略对于安全是非常重要的,但有时候我们又需要从其他域请求数据,这个时候就需要...
云计算环境下的访问控制技术不仅要支持传统访问控制的种种机制,还需要具备高可扩展性、灵活的策略配置和细粒度的访问控制等特性,以应对云计算环境下动态变化的访问需求。 目前,业界和学术界广泛研究的云计算访问...
Silverlight支持数据双向绑定、控件风格与模板、LINQ、WCF、JSON、Socket以及跨域访问等。 Silverlight的架构体系包括了以下几个方面: - XAML:用于定义用户界面的语言。 - 媒体层:支持多种多媒体格式和丰富的...
项目初期,我们尝试通过客户端模拟登录的方式解决此问题,但种种尝试均以失败告终。原因在于,客户端脚本无法绕过浏览器同源策略的限制,直接在远程服务器上设置Cookie。因此,我们不得不转向对PHP文件进行深入分析...