【转】js 跨域访问问题解决方法
来源:互联网 发布:前序遍历非递归算法 编辑:程序博客网 时间:2024/05/03 02:22
本文原址:http://www.cnblogs.com/dwzjs/archive/2011/08/19/2146093.html
什么引起了ajax不能跨域请求的问题?
ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。
有什么完美的解决方案么?
解决方案有不少,但是只能是根据自己的实际情况来选择。
跨域的安全限制都是指浏览器端来说的,服务器端是不存在跨域安全限制的。所以针对这2种情况衍生出2类跨域解决方案,一类是服务器端做中转类似代理方式,一类是js处理浏览器端的真正跨域访问。
具体情况有:
- 本域和子域的相互访问: www.aa.com和book.aa.com 用 document.domain = "aa.com";
- 本域和其他域的相互访问: www.aa.com和www.bb.com 用 XMLHttpRequest访问代理,既服务器端代理方式
- 本域和其他域的相互访问: www.aa.com和www.bb.com 用 JS创建动态脚本,<script>标签的src属性实现跨域访问
解决方法:
- 如果想做到数据的交互,那么www.aa.com和book.aa.com必须由你来开发才可以。可以将book.aa.com用iframe添加到 www.aa.com的某个页面下,在www.aa.com和iframe里面都加上document.domain = "aa.com",这样就可以统一域了,可以实现跨域访问。就和平时同一个域中镶嵌iframe一样,直接调用里面的JS就可以了。
- 这种情形是最经常遇到的,也是用的最多的了。就是www.aa.com和www.bb.com你只能修改一个,也就是另外一个是别人的,人家告诉你你要取得数据就访问某某连接参数是什么样子的,最后返回数据是什么格式的。而你需要做的就是让你的服务器端充当中转代理,让服务器去别人的网站上取得数据,再返回给浏览器端。
服务器端充当中转代理方式有很多可以由服务器端程序实现,也可以修改服务器配置实现,下面举例Apache重写(mod_rewrite proxy模式)方式:
在Apache的安装目录下的conf/httpd.conf 文件添加如下语句:
view sourceprint?
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteRule ^/_proxy/(.*)$ http://
$1
[P,L]
- 【转】js 跨域访问问题解决方法
- js 跨域访问问题解决方法
- js_跨域访问问题解决方法
- jQuery 跨域访问问题解决方法
- iframe 跨域访问session/cookie丢失问题解决方法
- iframe 跨域访问session/cookie丢失问题解决方法
- java 跨域访问问题解决
- ajax跨域访问问题解决
- JS跨域问题解决方法之APACHE反向代理
- js跨越问题解决方法
- JS跨越问题解决方法
- 跨域问题解决方法
- mysql远程访问 问题解决方法
- WMI远程访问问题解决方法
- JS跨域问题解决方案
- 关于js跨域问题解决
- js 跨域问题解决方案
- 三种方法实现js跨域访问
- Handler初级用法
- Floating point exceptionexec
- 有人看了第一句就哭了
- openfire servlet插件
- Ubuntu10.04 下设定 NFS 服务
- 【转】js 跨域访问问题解决方法
- 用javamail创建带图片的邮件
- 记事本的一些简单操作
- Oracle11g的新工具SQL DEVELOPER,替换了isqlplus
- 简明 Vim 练级攻略
- 桶排序与带循环的算法时间复杂度分析
- 浅谈HTTP的无状态性
- War3更新相关问题
- js 闭包的作用 简单的例子 说明