浏览器主要组成部分:
用户界面:包括地址栏、前进后退按钮、书签菜单等。除了浏览器主要窗口显示的您的请求页面外,其他现实的各个部分都属于用户界面
浏览器引擎:在用户界面和呈现引擎之前传送指令
渲染引擎:负责显示请求的内容。如果请求的内容是HTML,它就负责解析HTML和CSS内容,并将解析后的内容显示在屏幕上
网络模块:用于网络调用,比如HTTP请求,其接口与平台无关,并为所有平台提供底层实现。
用户界面后端:用于绘制基本的窗口小部件,比如组合框和窗口。其公开了与平台无关的通用接口,而在底层使用操作系统的用户界面方法。
javascript解析器:用于解析和执行javascript代码
数据存储模块:这是持久层,浏览器需要在硬盘上保存各种数据,例如cookie sessionstorage localstorage
跨域
同源策略是一个重要的安全策略,它用于限制一个origin(源)的文档或者它加载的脚本如何能与另一个源的资源进行互换。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
如果两个URL的protocol、port、和host都相同(协议、端口、主机一致为同源),则这两个URL是同源
当一个请求的URL的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
解决跨域
jsonp
原理:利用
优点:JSON优点是简单兼容性好,可以解决主流浏览器的跨域数据访问问题
缺点:仅支持get方