域名地址组成:协议 子域名 主域名 端口号 请求资源地址
当协议到端口号中任意一个不相同时,就算作跨域。
js出于安全考虑,不允许跨域调用其它页面的对象,因为js同源策略的限制。
跨域请求方法:
1服务器代理
通过在同域名的web服务器上创建一个代理。
例:服务器A,服务器B,服务器A的后台来调用服务器B的服务,然后把响应结果传给前端,这样前端调用同域名的服务器A的服务就和调用服务器的服务效果相同了。
2使用jsonp协议(仅限于GET方式,同时需要前端后端配合)
在某个页面中:
<script>
function jsonp(json){
alert(json["name"]);
}
</script>
<script src ="域外的js文件"></script> //原理:<script>标签可以引入域外的资源文件
在域外的js文件中
jsonp({.........}) //json格式的数据
3、html5提供的xmlhttprequest level2(XHR2)可以实现跨域访问(ie10以下不支持)
在服务器端做一些改造:
header("Access-Control-Allow-Origin:"); //允许访问的域名,表示所有的
header("Access-Control-Allow-Methods:POST,GET"); //允许访问的请求方式