协议、域名、端口,只要有一个不同就会造成跨域问题
1. 主域和子域的区别
– 主域一般在域名后半段,只含有一个.
– 子域一般是包括主域的字段
2. location.hash
– #代表网页的一个位置,右面的字符就是该位置的表示符,通过location.hash可以读写hash
– 为网页位置指定标识符,有两个方法
– 一是使用 瞄点,例如
– 二是使用id属性,比如< div id=”print”><\div>
– 发送http请求时,并没有将hash发送。hash只是用来指导浏览器动作的,对服务器并没有作用
– h5中新增onhashchange事件,当#值改变时,就会触发这个事件
3. window.name
– window.open()打开新网页时,第二个参数就是此网页的name
– 还有在iframe中,有个name属性
– 作用 是判断当前window的名称,比如一个页面中含有很多个iframe时,就可以用window.name得到当前window的名称
一共八种方法解决跨域问题
1. document.domain + iframe (只有在主域相同的时候才能使用该方法)
2. 动态创建script (是因为script、iframe、img等含有src属性的标签都不受同源策略的限制)
3. location.hash + iframe
4. window.name + iframe(name值在不同的页面甚至域名加载后依旧存在,且支持最大2MB的数据)
5. postMessage(HTML5中的XMLHttpRequest Level 2中的API)
6. CORS(跨域资源共享cross-origin resource sharing )
7. JSONP(最重要的一种方法,使用回调函数和数据)
8. web sockets