浏览器跨域访问操作
浏览器从一个域名的网页去请求一个域名的资源时,只要有域名、端口、协议任何一个不同,都是跨域。
js实现跨域操作的方法
方法一:通过JSONP跨域。
jsonp的原理是利用<script>标签的跨域特性,可以不受限制地从其他域中加载资源。
方法二:通过document.domain+iframe跨域
这种方法只有在主域相同的时候才能使用。
方法三:通过window.name+iframe跨域
window的name属性特征:name 值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB),即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面window.name都有读写的权限。所以可以使用window.name来进行跨域。
方法四:通过window.postMessage跨域
window.postMessage(message,targetOrigin) 方法是html5新引进的特性,可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源。
方法五:跨域资源共享(CORS)跨域
一种跨域访问的机制,可以让AJAX实现跨域访问;CORS允许一个域上的网络应用向另一个域提交跨域AJAX请求。
服务器设置Access-Control-Allow-Origin HTTP响应头之后,浏览器将会允许跨域请求。
方法六:使用Web sockets来跨域
web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。
方法七:使用flash URLLoader来跨域
flash有自己的一套安全策略,服务器可以通过crossdomain.xml文件来声明能被哪些域的SWF文件访问,SWF也可以通过API来确定自身能被哪些域的SWF加载。