- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络相关面试题
iOS 技术交流群: 638302184
一、HTTP协议
HTTP协议:超文本传输协议
是一种详细规定了浏览器和万维网(WWW World Wide Web)服务器之间互相通信的规则,通过因特网传送
万维网文档的数据传送协议。
HTTP是基于TCP 的应用层协议
(OSI网络七层协议从上到下分别是 应用层、表示层、会话层 、传输层、网络层 、数据链路层、物理层)
请求/响应报文
连接建立流程
HTTP 的特点
A、请求报文和响应报文
1、请求报文
如下:
Host:指明了该对象所在的主机
Connection:Keep-Alive首部行用来表明该浏览器告诉服务器使用持续连接
Content-Type:x-www-form-urlencoded首部行用来表明 HTTP会将请求参数用key1 val1key2 val2的方
式进行组织,并放到请求实体里面
User-agent:首部行用来指明用户代理,即向服务器发送请求的浏览器类型
Accept-lauguage:首部行表示用户想得到该对象的法语版本 (如果服务器中有这样的对象的话),否则,
服务器应发送它的默认版本
2、响应报文
如下:
状态码及其相应的短语指示了请求的结果。
一些常见的状态码和对应的短语:
200 OK:请求成功,信息在返回的响应报文中
301 Moved Permanently:请求的对象已经被永久转移了,新的URL 定义在响应报文中的Location:首
部行中。客户软件将自动获取新的URL
400 Bad Request:一个通用差错代码,指示该请求不能被服务器理解
404 Not Found:被请求的文件不在服务器上
505 HTTPVersion Not Supported:服务器不支持请求报文使用的HTTP 协议版本
4 开头的状态码通常是客户端的问题,5 开头的则通常是服务端的问题
Connection:close 首部行告诉客户,发送完报文后将关闭TCP 连接。
Date:指的不是对象创建或最后修改的时间,而是服务器从文件系统中检索到该对象,插入到响应报文,
并发送该响应报文的时间。
Server: 首部行指示该报文是由一台Apache Web 服务器产生的,类似于HTTP请求报文里的User-agent
Content-Length:首部行指示了被发送对象中的字节数
Content-Type:首部行指示了实体体中的对象是HTML 文本
二、HTTP 的请求方式
GET、POST、PUT、DELETE、HEAD、OPTIONS
1、GET 和POST 方式的区别
从语法角度来看,最直观的区别就是
GET 的请求参数一般以?分割拼接到URL 后面,POST 请求参数在Body 里面
GET 参数长度限制为2048 个字符,POST 一般是没限制的
GET 请求由于参数裸露在URL 中, 是不安全的,POST 请求则是相对安全
之所以说是相对安全,是因为,如果POST 虽然参数非明文,但如果被抓包,GET 和POST 一样都是不
安全的。(HTTPS 该用还是得用)
而从语义的角度来看:
GET:获取资源是 安全的,幂等的(只读的,纯粹的), 可缓存的
POST:获取资源是 非安全的,非幂等的,不可缓存的
这里的安全是指不应引起Server 端的任何状态变化
GET 的语义就是获取数据,是不会引起服务器的状态变化的,即是安全的。(HEAD,OPTIONS 也是安
全的)
而POST 语义则是提交数据,是可能会引起服务器状态变化的,即是不安全的
幂等:同一个请求方法执行多次和执行一次的效果完全相同
显然GET 请求是幂等而POST 请求是非幂等的。
这里用幂等形容GET 还不够,因为GET 不止是执行多次和执行一次的效果完全相同,而且是执行一次
和执行零次的效果也是完全相同的。
可缓存的
请求是否可以被缓存。
GET 请求会主动进行Cache
以上特性,并非并列,正是因为GET 是幂等的只读的,即GET 请求除了返回数据不会有其他副作用,所以
GET 才是安全的,从而可以直接由CDN 缓存,大大减轻服务器的负担,也就是可缓存的。
而POST 是非幂等的,即除了返回数据还会有其他副作用,所以POS
文档评论(0)