跨域意味着浏览器不能运行其他网站的脚本。 这是由浏览器的同构策略引起的,是浏览器对javascript施加的安全限制。

同源就是指,域名,协议,端口均相同。

http://www.123.com :8080/index.html调用3358 www.123.com 33608081/server.PHP (跨域)

http://www.123.com/index.html调用https://www.123.com/server.php (按协议分类:http/https,跨域)

这里要注意一下,localhost和127.0.0.1虽然都指向本机,但也属于跨域。

localhost也称为local,正确的解释是本地服务器

127.0.0.1windows等系统上的正确解释是使用本地地址(

他们的解析通过本地的host文件,windows自动将localhost解析为127.0.0.1

常见的跨域方式

利用jsonp进行跨域(json和jsonp的区别在另一篇文章中进行了说明)这种方法不需要介绍。 这也是最常见的跨域方式之一。

window.name+iframewindow.name通过将跨域HTML文件加载到iframe (一般动态创建I )中来工作。 然后,HTML文件将传递给请求者的字符串的内容分配给window.name。 然后,请求者可以获取window.name的值作为响应。

window.postMessage()HTML5中的新功能。 它可用于向所有其他窗口对象发送消息。 需要注意的是,必须确保所有脚本都在执行后才发送消息事件,如果在函数执行过程中调用,则后续函数将超时且无法执行。

33558 www.Sina.com/websocketprotocol是HTML5的新协议。 实现浏览器与服务器的全双工通信,同时允许域间通信,是server push技术的美好实现。 有关相关文章,请参阅WebSocket WebSocket-SockJS

http://www.Sina.com/ping经常用于跟踪用户点击页面和动态广告曝光的次数。 script标签可以从其他源获得数据,这也是JSONP依赖的依据。

缺点:只能发送Get请求,无法访问服务器的响应文本((单向请求) )。

有关详细信息,请参见8种方法实现跨域请求