[关闭]
@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目前大多数的浏览器都支持
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注