在同一站点下,跨子域进行ajax通信的一种解决方法
来源:互联网 发布:宸轩网络精选 编辑:程序博客网 时间:2024/04/30 08:18
处于安全的考虑,浏览器对于ajax请求是有限定的,他要求发起和相应请求的双方处于相同的域名。
一种比较容易的方式就是在当前的域名下设置一个代理页面,通过它来发送请求和转接回复的数据,从而实现ajax的跨域请求。这种方式的优势在于可以跨站点而不仅限于跨子域,不过这样做还有一个弊端就是客户端的session信息将会丢失,在一些需要session的情形(比如需要用户登录验证的情况)就不能适用。
这里介绍的是另一种方法。
解决办法其实和上面的代理页面方式有些类似,上面的方式我们实际上是借用代理页面来发送请求和接受数据,从而绕开浏览器的安全设定。而在这里我们将借用代理页面所处的环境,通过它来实现功能。
首先在想要进行通信的那个子域下设置一个"代理"页面,在这个页面中我们是能对这个子域下的数据进行ajax请求的。
接着就是需要建立一个通道来使用"代理"页面的这一权限,我们在需要使用跨子域的页面中通过iframe引入代理页面,然后通过javascript就能获得代理页面的javascritp环境(iframeEle.contentWindow),不过这里有个前提就是代理页面需要和当前页面处于同一域中(document.domain需要一致)。由于对于document.domain的值设定时有一个规定就是,域只能提升,不能降低层级或者跳到同级中(比如 home.blueidea.com 只能设为blueidea.com 而不能设为 bbs.blueidea.com或者 xx.home.blueidea.com),所以这里可以在两个页面中同时把document.domain提升为站点的主域。
通过以上的实现,我们就可以在页面中调用想要进行通信的子域下的"代理"页面来进行ajax通讯了。
0 0
- 在同一站点下,跨子域进行ajax通信的一种解决方法
- 在同一站点下,跨子域进行ajax通信的一种解决方法
- 在同一站点下,跨子域进行ajax通信的一种解决方法
- 在同一站点下,跨子域进行ajax通信的一种解决方法
- IE下因设置document.domain而无法和Iframe通信的解决方法(SCRIPT5: 拒绝访问)[转] 最近在开发SDK的过程中发现IE下有个很怪异的问题:在同一域下,因
- ajax出现乱码的一种解决方法
- 实现不同路由器下各主机的局域网通信(设置在同一网段内)
- oracle9i 和10g安装在同一系统下的TNS: 协议适配器错误的解决方法
- Qt在Mac下USB通信的解决方法
- 在Linux下进行串口通信相关参数的设定
- 如何在同一Tomcat下进行多端口配置
- ajax在兼容模式下失效的快速解决方法
- ajax 在IE9浏览器下不发送请求的解决方法
- 在网页站点使用Ajax访问CAS保护网址时,报not allowed access错误的解决方法
- 在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态
- 在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态
- 在同一网段和不同网段通信的区别
- 飞鸽传书如何在VMware下进行通信
- strcpy and strncpy
- java打包成运行jar
- SDOI2014 Round2 Day1
- Android布局,xml,属性,TypedArray的一些事
- onboard computing
- 在同一站点下,跨子域进行ajax通信的一种解决方法
- Web.config详细分析
- zippo打火机的特点:
- 在ASP.NET MVC 上使用Web.sitemap
- Kamailio服务器安装配置
- Linux内核协议栈之关键数据结构及关系图(v2.6.18)
- Linux内核协议栈之数据发送与接收流程详图(v2.6.18)
- ArcGIS 10.1 如何连接数据库
- 最短路径算法—Floyd-Warshall算法分析与实现