网络问题
1.URI 是什么?
URI 的全称为 Uniform Resource Identifier, 即统一资源标识符.
URI 是由URL 和 URN两个子集合组成
2.URL 是什么?
URL 的全称为 Uniform Resource Locator, 即统一资源定位符.
URL 是URI 的子集、每个URL都是URI.
可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
URL通常包含6个部分:寻址方案、网络位置、路径、参数、查询、片段标识符
3.URN 是什么?
URN 的全称 Uniform Resource Name, 统一资源名称.
URN 只命名资源、而不指定如何定位资源.
4.超文本是什么?
超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容
5.HTTP 和 HTTPS ?
HTTP 即 Hyper Text Transfer Protocol、超文本传输协议.
HTTP 协议是用于从网络传输超文本到本地浏览器的传送协议.
HTTPS 即 Hyper Text Transfer Protocol over Secure Socket Layer.
HTTPS 是以安全为目标的HTTP通道、是HTTP的安全版、HTTP+SSL层.
HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
6.网络请求包含的各列?
Name: 请求名称 Status: 响应的状态 Type: 请求的文档类型 Initiator: 请求源 Size: 资源大小 Time 获取响应的总时间 Waiterfall: 网络请求的可视化瀑布流
7.Headers General部分?
Request URL、Request Method、Status Code、Remote Address、Referrer Policy 判断策略.
8.Request Headers 请求头?
浏览器标识、Cookie、Host、Accept、Accept-Encoding、Accept-language等信息
服务器会根据请求头信息判断请求是否合法、进而作出对于的响应.
9.Response Headers 响应头?
服务器类型、文档类型、日期、认证、content-type等信息
10.请求信息?
由客户端向服务端发出、可分为4个部分:请求方法、请求地址、请求头、请求体
11.请求头信息?
请求头用来说明服务器要使用的附加信息、比较重要的由 Cookie、Referer、User-Agent等。
Accept 请求报头域,用来指定客户端可以接受那些类型的信息.
Accept-Encoding 指定客户端可以接受的内容编码.
Accept-language 指定客户端可以接受的语言类型.
Host 用于指定请求资源的主机IP和端口号.
Cookie 或 Cookies 网站为了辨识用户进行会话跟踪而存储在用户本地的数据. 主要功能是维持当前访问会话.
Referer 用来标识这个请求是从那个页面发过来的、服务器可以拿到这些信息并相应的进行处理、如资源统计、防盗链接处理等.
User-Agent 简称UA 特殊的字符串头、可以识别客户使用的操作系统及版本、浏览器及版本等信息、爬虫可以用它来伪装浏览器.
Content-Type 互联网媒体类型或者MIME类型、在HTTP协议消息头中表示具体请求中的媒体类型信息.
12.请求体信息?
请求体一般承载的内容是POST请求中的表单数据、而GET请求体则为空.
提交的数据通常以表单数据形式提交给服务器, 请求头中需指定Content-Type为application/x-www-form-urlencoded.
Content-Type: application/x-www-form-urlencoded 以表单数据形式提交数据
Content-Type: multipart/form-data 以表单文件数据形式提交数据
Content-Type: application/json 序列化JSON数据形式提交数据
Content-Type: text/xml 提交xml数据
13.响应信息?
响应由服务端返回给客户端、可以分为3部分:响应状态码、响应头、响应体
14.什么是HTTP的无状态?
是指HTTP协议对事务的处理没有记忆能力、服务器不知道客户端是什么状态.
当客户端向服务端发出请求后、服务器解析请求、返回响应、服务器负责的过程完全独立、缺少状态纪录.
Cookies 和 Session就是为了保持服务器连接状态而出现的技术.
15.Cookies ?
cookies 指某些网站为了辨识用户身份、进行会话跟踪而存储在用户本地终端上的数据. 主要功能是维持当前访问会话.
16.Session?
Session 本意指有始有终的一系列动作/消息. Session对象用来存储特定用户会话所需的属性及配置信息.
存储在会话中的变量将不会丢失、在用户整个会话中一直持续下去、当会话过期或被放弃后、服务器将终止会话.
17.如何利用Cookies保持状态?
当客户端第一次请求服务器时, 服务器会返回一个请求头中带有Set-Cookie 字段的响应给客户端、用来标记是哪一个用户、客户端会保存Cookie到本地、当下一次请求改网址时、浏览器会把Cookies放到请求头一起提交给服务器、Cookies携带了Session ID信息、服务器会检查Cookies即可找到对应的会话是什么、然后根据会话辨识用户状态.
18.会话Cookie 和 持久Cookie?
会话Cookie就是把Cookie放到浏览器内存里, 浏览器关闭之后、改Cookie即失效.
持久Cookie就是会保存Cookie到客户端硬盘中、下次还可以继续使用、用于长久保持用户的登陆状态等。
```
HTTP协议之"multipart/form-data"请求分析
1.http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开. 既可以上传键值对,也可以上传文件.
2.当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件
3.multipart/form-data的基础方式是post,也就是说通过post组合方式来实现的. multipart/form-data于post方法的不同之处在于请求头和请求体.
4.multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,其值也必须为multipart/form-data, 同时还需要规定一个内容分割用于分割请求提中多个post的内容,如文件内容和文本内容是需要分隔开来的,不然接收方就无法解析和还原这个文件了.
5.具体的头信息如下:Content-Type: multipart/form-data; boundary=${bound}, 其中${bound} 是一个占位符,代表我们规定的分割符,可以自己任意规定,但为了避免和正常文本重复了,尽量要使用复杂一点的内容.
multipart/form-data的请求体也是一个字符串,不过和post的请求提不同的是它的构造方式,post是简单的name=value键值连接,而multipart/form-data是添加了分隔符等内容的构造体,
具体如下:
```
```
2、"x-www-form-urlencoded"
就是application/x-www-from-urlencoded,
会将表单内的数据转换为键值对,比如,name=java&age = 23
```
```
3、"raw"
可以上传任意格式的文本,可以上传text、json、xml、html等
```
```
4、"binary"
相当于Content-Type:application/octet-stream,从字面意思得知,
只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件
```
```
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准. UUID 的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID.
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
python中quote函数是什么意思? 屏蔽特殊的字符、比如如果url里面的空格!url里面是不允许出现空格的。
按照标准: URL 只允许一部分 ASCII 字符(数字字母和部分符号)、其他的字符(如汉字)是不符合 URL 标准的。所以 URL 中使用其他字符就需要进行 URL 编码。
URL 中传参数的部分(query String),格式是:
name1=value1&name2=value2&name3=value3
假如你的 name 或者 value 值中有『&』或者『=』等符号,就当然会有问题。所以URL中的参数字符串也需要把『&=』等符号进行编码。URL编码的方式是把需要编码的字符转化为 %xx 的形式。通常 URL 编码是基于 UTF-8 的(当然这和浏览器平台有关)
string-escape是对二进制的字节流,一个字节一个字节转义,并对每个字节以16进制输出
unicode-escape是对unicode编码的字节流,两个字节两个字节转义,并对每两个字节一起以16进制输出
```