让前端飞Web前端之路

跨域问题分析

2017-12-21  本文已影响84人  小小字符

代码这种东西就是得不断的使用,如果长时间不用就会生疏。今天偶然间,有人问我跨域的原理和怎么解决,说了一下,但是总是感觉还是差了点什么,特此温习一下。

跨域的产生

最根本的原因就是浏览器的同源策略,所谓"同源"指的是"三个相同" 协议相同、域名相同、端口相同,违反一个就会产生跨域问题。

请求的分类(简单请求和非简单请求)

解决跨域问题的方式

1、JSONP 方式 (只能是 get )
function addScriptTag(src){
    var script = document.createElement('script');
    script.setAttribute('type','text/javascript');
    script.src = src;
    document.body.appendChild(script);
}

window.onload = function (){
    addScriptTag('http://example.com/ip?callback=foo');
}

function foo (data) {
    console.log('response data:'+JSON.stringify(data));
}

请求时,接口地址是作为构架出的脚本标签的src的,这样,当脚本标签构建出来时,最终的src是接口返回的内容;

2、CORS 方式

cors是一个W3C标准,全称是--跨域资源共享,其实所有的浏览器ajax请求都是基于CORS机制的,只是我们可能平时并不关心而已(所以说其实现在CORS解决方案主要是考虑后台该如何实现的问题 )。

3、方向代理

通过把本地一个url前缀映射到要跨域访问的web服务器上,就可以实现跨域访问。

ajax跨域的表现

上一篇 下一篇

猜你喜欢

热点阅读