@windchimes
2018-03-27T03:05:16.000000Z
字数 669
阅读 256
前端知识点总结
跨域:协议、端口、域名有一个不同,就算是跨域操作
跨域是浏览器的策略
为什么有同源限制:因为浏览器认为来自其他页面的文档或者脚本不安全
跨域存在的问题:CSRF(cross-site request forgery跨站请求伪造)攻击,通过伪装来自受信任用户的请求来进行攻击
解决跨域方法:
1)jsonp方法,利用的是动态生成的script标签的src属性不受同源策略限制的原理,因为是src属性来实现的跨域,所以只能把请求参数放在url中,这就是jsonp只能实现get请求的原因
2)document.domain方法 (主域相同,子域不同)
3)CROS(跨域资源共享),基本思想是利用自定义的http头部让浏览器和服务器进行沟通,最重要的浏览器设置的http头部字段是Access-Control-Allow-Origin字段,其值就是指定的允许访问该资源的外域url,服务器会接收此字段并在指定的url访问时允许访问实现跨域
4)html5的postMessage方法,此方法类似监听发布模式,具体可参考此链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage,此方法单纯的前端即可实现,较方便
CORS与JSONP方法比较优点:
1)JSONP只能使用get方式请求,而CORS支持左右类型的http请求
2)可以使用普通的XMLHTTPREQUEST发起请求和获得数据,能够更好的进行错误处理
3)浏览器支持程度,CORS目前大多数的浏览器都支持
