同源策略与基本网络知识
在进行用户交互的过程中,不可避免的需要我们用到数据请求,将后台的数据拿到前台进行使用。在前后端没有分得很明确时,大都采用直接使用php等语言来进行这个交互过程。在发展到如今,常用的方式大都采用前后端分离的思想,然后再采用数据交互的过程来实现。因此在这里就介绍的为这一部分的内容。
首先来基本的了解下计算机网络首先就是在浏览器中的同源策略,所谓的同源策略是指域名,协议,端口相同。不同源的客户端脚本在没有明确授权的情况下不能读出对方的资源,只能去访问同源的文件。那么什么是域名什么是协议什么是端口呢在下面的一个例子中进行说明:https://www.baidu.com/中,其中的http指的是协议,www.baidu.com指的是域名,在.com后面加上:440这个
表示的就是默认的端口号,如果是默认的端口号,则不需要在访问网站的时候去写端口号。http默认的端口号是:80 https的默认的端口号是:440 https是在http的基础上加了SSL层而形成的,其安全性更高。
域名解析的过程,在对域名进行解析时,其解析的过程是倒着解析的 域名又分为一级域名 .com 二级域名 baidu.com 三级域名 zhidao.baidu.com
相关的域名含义: com org net 属于顶级域名,是在全世界范围内解析的,cn hk是在一个地区解析的 如cn 中国 .com(商业机构) .net(从事互联网服务的机构) .org(非盈利性组织) .com.cn (国内商业机构) .net.cn(国内从事互联网服务机构) .net.org(国内非盈利性组织)
DNS先根据顶级域名判断网络范围再根据域名查找主机ip地址,理论上www开头相当于占用为的 在国外一般不写www
网络请求的过程:
1.浏览器通过DNS域名解析到服务IP
2.客户端(浏览器)通过TCP协议建立到服务器的TCP连接(三次握手)
3.客户端(浏览器)向web服务器端(HTTP服务器)发送HTTP协议包,请求服务器里的资源文档(telnet模拟)
4.服务器向客户端发送HTTP协议应答包
5.客户端和服务器断开(四次挥手),客户端开始解释处理HTML文档
三次握手:
1.首先client端发送连接、请求报文
2.server端接受连接后回复ACK报文,并为这次连接分配资源
3.client端接收到ACK报文后也向sever端发送ACK报文,并分配资源,这样TCP连接就建立了
四次挥手:
1.client端发起中断请求即发送FIN报文,server端接到FIN报文后会反馈信息,如果数据还没有发送完成,则不必急着
关闭,可以继续发送数据
2.server发送ACK,表示接受到请求,让client端继续等待,此时client端进入FIN_WAIT状态,继续等待server端的FIN
报文
3.当server端确定数据已经发送完成,则向client端发送FIN报文
4.client端收到FIN报文后,其知道可以关闭连接后,然后发送ACK后进入TIME_WAIT状态,如果server端没有收到ACK
则可以重新上传。如果收到ACK后,就可以正常的关闭,这样client端就可以关闭连接了。然后TCP可以断开连接了
TCP和UDP(传输层协议)
面向连接的TCP
TCP(transmission control protocol,传输控制协议)是基于连接的协议,在正式发数据前,必须和对方建立可靠的连接
面向非连接的UDP
UDP(user data protocol,用户数据报协议),面向非连接的协议,不与对方建立连接,二十直接就把数据包发送过去
http(请求报文,响应报文)通过报文进行沟通
请求报文:
请求头 请求行 请求主体
请求头: 在请求头中的内容包括 1. 请求方式 2.请求url 3. http协议及版本
响应报文
响应头 响应行 响应主体
状态码
1XX 信息 表示接到请求继续处理
2XX 成功 成功的收到,理解,接受
3XX 重定向 为了完成请求需要进行另一部措施(如直接从浏览器缓存资源,或跳转到其他页面)
4XX 客户端错误 请求语法有错,不能完全符合要求
5XX 服务器错误 服务器无法完成明显有效的请求
常见的http状态码
成功状态码:
200 服务器成功返回内容
301或者302 临时/永久重定向
304 资源未被修改过
失败状态码
404 请求内容不存在
500 服务器暂时不可用
503 服务器内部错误
请求方法 GET POST 的区别
常规理解
1.GET使用URL或Cookie传参,而POST将数据,放在BODY中。
在GET请求中它的参数是要拼接到URl后面的,POST请求它的请求data是拼接在请求主体中
2.GET的URL会有长度上的限制,POST可以传输很多数据。
GET在长度上有限制是因为请求的data放在URL后面,URL的输入框是有限制的
POST传输的数据也会有一定的限度,因为这是为了安全性的考虑,为了反之恶意攻击
3.POST没有GET安全
POST请求中的数据是可见的,不要将用户名等私密信息放在POST请求中
浏览器缓存机制(http)
304上次缓存的资源没有改变,则浏览器就可以从上次的缓存中去取数据
请求头 相应头
请求头:
if-none-match: 匹配etag 如果它修改了 就不取缓存
if-modified-since: 将先前服务器端发过来的最后修改时间戳发送回去
响应头:
etag:
etag 标记图片资源
last-modified(服务器最后修改的时间)和etag配合使用
ETags和If-None-Match的工作原理是在HTTP Response中添加ETags信息,当客户端再次请求该资源时,将在HTTP
Response中加入If-None-Match信息(ETags的值)。如果服务器验证资源的etags没有改变(该资源没有改变),将
返回一个304状态;否则,服务器将返回200状态,并返回该资源和新的ETags
Date:服务器响应内容日期
Cache-control:内容缓存时间
no-cache: 不被缓存的,
no-store 用于防止重要的信息被无意的发布。
max-age: 指示客户机可以接收生存期不大于指定时间的响应
min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应
max-stale 指示客户机可以接收超出超时期的响应消息
Expires 内容保质期,表示存在时间 允许客户端在这个时间之前不去检查(发请求)
网站如何统计用户从何点击而来
referer: 如果从浏览器地址栏里直接输入地址请求头没有referer