前端需要掌握的网络原理

同源:

浏览器有一个概念——同源策略(Same-Origin Policy)。

所谓同源是指,域名,协议,端口相同。

1.Cookie、LocalStorage 和 IndexDB 无法读取
2.DOM 和 Js对象无法获得
3.AJAX 请求不能发送

跨域

JS跨域请求就是突破同源的方法
1.CORS方案
需要服务器支持,浏览器默认都支持该功能。

CORS通信与同源的AJAX通信代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

2.jsonp跨域
通过动态创建script,再请求一个带参网址实现跨域通信,只能实现get请求。

3.document.domain+ iframe跨域
此方案仅限主域相同,子域不同的跨域应用场景。

实现原理:两个页面都通过js强制设置document.domain为基础主域,就实现了同域。

4.location.hash + iframe跨域

A域:a.html -> B域:b.html -> A域:c.html,a与b不同域只能通过hash值单向通信,b与c也不同域也只能单向通信,但c与a同域,所以c可通过parent.parent访问a页面所有对象。

5.window.name + iframe跨域

window.name属性的独特之处:name值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB)。

6.postMessage跨域
postMessage是HTML5 XMLHttpRequest Level 2中的API,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题:
a.) 页面和其打开的新窗口的数据传递
b.) 多窗口之间消息传递
c.) 页面与嵌套的iframe消息传递
d.) 上面三个场景的跨域数据传递

用法:postMessage(data,origin)方法接受两个参数
data: html5规范支持任意基本类型或可复制的对象,但部分浏览器只支持字符串,所以传参时最好用JSON.stringify()序列化。
origin: 协议+主机+端口号,也可以设置为"*",表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。

  1. Nodejs中间件代理跨域, nginx代理跨域
  2. 同源策略是浏览器的安全策略,不是HTTP协议的一部分。服务器端调用HTTP接口只是使用HTTP协议,不会执行JS脚本,不需要同源策略,也就不存在跨越问题。
简单概念

1.浏览器通过DNS域名解析到服务IP(ping www.baidu.com)

2.客户端(浏览器)通过TCP协议建立到服务器的TCP连接 (三次握手)

3.客户端(浏览器)向web服务器端(HTTP服务器)发送HTTP协议包,请求服务器里的资源文档 (telnet 模拟)

4.服务器向客户端发送HTTP协议应答包

5.客户端和服务器断开(四次挥手),客户端开始解释处理HTML。

状态码

常见的http状态码

成功状态码:

200 服务器成功返回内容

301/2 临时/永久重定向

304 资源未被修改过

失败状态码:

404 请求内容不存在

500 服务器暂时不可用

503 服务器内部错误

传输协议:TCP/UDP

TCP必须保持连接是可靠的

UDP可以存在丢包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值