javascript处于安全的考虑,不允许访问不同域名的文档,不同域不仅包括不同的主域名也包括主域名和子域名,一个主域名下的不同子域名(如:http://和http://),一个主域名下二级域名和三级域名(如:http://和http://cha.)。在这种时候javascript不能获取不同域的任何信息(取值和赋值)。
javascript的跨域包括Ajax跨域访问和通过javascript访问frame,iframe中不同域名的文档,实际这些都是由于javascript的跨域问题所引起的。
下文将给出几种解决javascript跨域问题的解决方法:
1.通过异步添加<script>标签来进行回调
个人感觉异步加载script是跨域比较完美的解决方案,不过目标程序需要为js格式,举个例子来说我想在http:///a.php中调用http:///b.php:
b.php
<?php
echo 'alert("Hello");';
?>
a.php的javascript
var script = document.createElement("script");
script.setAttrbute("src", "http:///b.php");
这样a.php中浏览器开始解释b.php输出的内容js
2.通过本地程序进行中转
假设http://下的a.html想要通过Ajax调用http://下的b.php,直接进行Ajax调用肯定会出现Permission denied的,那就要想办法通过http://来访问目标文件,这就需要一个中转程序暂且就称他remoteproxy.php,在php中可以通过file_get_contents,socket等方法取调用远端程序,这样http:///1.html通过Ajax去调用http:///remoteproxy.php?remoteurl=http:///b.php,这样在浏览器看来是通过Ajax来调用调用同一域名下的文件,这样就解决了Ajax跨域的问题。
3.通过服务器配置来进行内部转发
采用服务器端rewrite的方法来实现浏览器端url不变的跳转,如apache的http-proxy模块。原理同2。
















