吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3111|回复: 12
收起左侧

[其他转载] 基础概念之HTTP

   关闭 [复制链接]
wjf323266 发表于 2020-12-7 15:43
HTTP协议的作用及特点[size=0.97]
HTTP是一个客户端和服务器端请求与应答的标准,客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或其他工具,向客户端发起一个到服务器上指定端口(默认端口号80)的HTTP请求。我们称这个客户端叫user agent,应答的服务器端(网站)存储着一些HTML文件或图像等信息,这个服务器我们称之为origin server。在用户代{过}{滤}理和源服务器中间可能存在多个中间层,如代{过}{滤}理、网关或者tunnels(隧道)。HTTP可以用在任何其他互联网协议上,HTTP只假定可靠的传输。
[size=0.97]
由HTTP客户端发起一个请求,建立一个到服务器指定端口的TCP连接,HTTP服务器则在那个端口监听客户端发过来的请求,收到请求后,服务器发回客户端一个状态行,比如“HTTP/1.1 200 OK ”,和响应的信息。HTTP用TCP的原因在于,TCP可以提供传输控制,错误纠正、按顺序组织数据的功能。
[size=0.97]
通过HTTP或HTTPS协议请求的资源由URLs来标识
  • 基于请求/响应模型的协议。请求和响应必须配对,先有请求再有响应
  • 简单快速:客户端向服务器请求服务时,只需要请求方法和路径。请求方法常用的有GET 、HEAD、POST
  • 灵活:HTTP允许传输任意类型的数据对象,正在传输的类型用Connent-Type标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完请求,并收到应答后,即断开连接,这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议,无状态是指对于事物处理没有记忆能力,缺少状态意味着无法处理前面传输的信息,有问题需要重传,这样可能导致每次连接传送的数据量增大;另一方面,在服务器不需要前面的信息的时候他应答就很快
HTTP协议的版本[size=0.97]
HTTP/1.0 发送请求 创建一次连接,获得一个web资源,连接断开
[size=0.97]
HTTP/1.1 发送请求 创建一次连接,获得多个web资源,连接断开
HTTP协议的组成[size=0.97]
HTTP协议由HTTP请求和HTTP响应组成。HTTP请求包括:请求行、请求头、请求体,响应相似。
  • HTTP请求报文
[size=0.97]
请求行:例如 POST/chapter17/user.html HTTP/1.1
[size=0.97]
格式 :     请求方式   资源路径   协议/版本
[size=0.97]
请求行必须在HTTP请求格式的第一行
  • get请求:将请求参数追加在url后面,不安全,url长度限制get请求方式数据大小,没有请求体,一般的HTTP请求大多都是GET
  • POST请求:请求参数在请求体处,较安全,请求数据大小没有显示,只有表单设置为method=“post”才是post请求,其他都是get请求,常见get请求如地址栏直接访问、<a href="">、<img src="">等
  • HEAD请求:HEAD和GET相似,不过服务端接受到HEAD请求时只返回响应头,不发送响应内容,所以当只看页面状态时,用HEAD更有效,因为省去传输页面内容的时间。
  • DELETE请求:删除某一个资源
  • OPTIONS请求:用于获取当前URL所支持的方法。若请求成功,会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET、POST”
  • PUT请求:把一个资源存放在指定的位置上,本质上讲,PUT和POST极为相似,都是向服务器发送数据,但他们之间有一个重要的区别,PUT通常指定了资源的存放位置,而POST没有,POST的数据存放位置由自己决定。
  • TRACE请求:回显服务器的请求,用于测试或诊断。
  • CONNECT请求:CONNECT方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代{过}{滤}理服务器,通常用于SSL加密翻译为一起的连接与非加密的HTTP代{过}{滤}理服务器的通信。
REST:[size=0.97]
全称是表述性状态转移。表述指的是资源,任何需要被引用的,只要有被引用的必要,它就是资源。要让资源有一个唯一的标识,在Web中这个唯一的标识就是URI,URI既可以当成是资源的地址,也可以看成是资源的名称,如果这些信息没有能用URL标识表示,那它就不能算是一个资源,只能算是资源的一些信息。URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联。
[size=0.97]
URI设计的技巧:
  • 使用-或者_来让URI可读性更好
  • 使用    /   来表示资源的层级关系
  • 使用  ?  用来过滤资源
  • 使用  , 或者 ; 可以用来表示同级资源的关系
[size=0.97]
统一资源接口:
[size=0.97]
RESTful架构应该遵循统一接口原则,统一接口包括了一组受限的预定义操作,不论用什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GET、PUT、POST,并遵循这些方法的语义。
GET、DEKETE、PUT、POST的典型用法:[size=0.97]
GET:
  • 安全且幂等
  • 获取表示
  • 变更时获取表示(缓存)
  • 200 OK -表示已在响应中发出             204(无内容) -资源有空表示                       301 (Move Permanently) -资源的URI已被更新                                                   303 (See Other-其他,如负载均衡   304(not modified)-资源未更改(缓存)
  • 400(bad request)-指代坏请求,如参数错误     404(not found)-资源不存在    406(not acceptable)-服务端不支持所需表示
  • 500(internal server error)-通用错误响应                                                      503(Service Unavaliable)-服务器端无法处理请求
[size=0.97]
PUT:
  • 不安全但幂等
  • 用客户端管理的实例号创建一个资源
  • 通过替换的方式更新资源
  • 如果未被修改,则更新资源(乐观锁)
[size=0.97]
POST:
  • 不安全且不幂等
  • 使用服务端管理的实例号创建资源
  • 创建子资源
  • 部分更新资源
  • 如果未被修改,则更新资源(乐观锁)
[size=0.97]
DELETE:
  • 不安全但幂等
  • 删除资源
HTTP请求报文头属性[size=0.97]
常见请求头:
  • Referer:表示这个请求是从哪个URL跳转过来的(直接访问就不会有这个请求头)
  • Accept:告诉服务端,请求所能支持的响应类型,如html、css、js(MIME类型)
  • if-Modified-Sincce:预览器通知服务器,本地缓存的最后变更时间。
  • Cookie:客户端的Cookie通过这个报文属性传给服务端。
  • User-Agent:预览器通知服务器,客户端预览器与操作系统相关信息。
  • Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接,close表示已关闭
  • Host:请求的服务器主机名。
  • Content-Length:请求体的长度。
  • Content-Type:请求的与实体对应的MIME信息。如果是Post请求,会有这个头。

状态码:
[size=0.97]
1** :指示信息,表示请求已接收,继续处理。
[size=0.97]
2**:成功,表示请求已被成功接受,处理。
  • 200 OK
  • 204 No Content:无内容。服务器成功处理但是未返回内容
[size=0.97]
3**:重定向
  • 301 Moved Permanently:永久重定向,表示请求的资源已经永久搬到了其他位置。
  • 302 Found:临时重定向,表示请求的资源临时搬到了其他位置。
  • 303 See Other:临时重定向,应使用GET定向获取请求资源。
[size=0.97]
4**:客户端错误
  • 400 Bad Request:客户端有语法错误,服务器无法理解。
  • 401 Unauthorized:请求未经授权
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  • 404 Not Found:请求资源不存在
[size=0.97]
5**:服务器端错误,服务器未能实现合法的请求。
  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端请求,一段时间后可能恢复。
Cookie:
[size=0.97]
      由于HTTP是无状态的,而服务器端的业务必须是有状态的,Cookie最初的目的是未来存储web中的状态信息,以方便服务器端的使用。
  • cookie的处理步骤   (1)服务器向客户端发送Cookie  (2)预览器将cookie保存(3)之后每次的HTTP请求,预览器都会将cookie发送给服务端
  • 服务器端的发送与解析

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
zhaoyf18 + 1 + 1 谢谢@Thanks!
成果我老婆 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zxpr 发表于 2020-12-7 15:50
感谢,学习了,先收藏下,以后备用
Biwizard 发表于 2020-12-7 15:53
a944764934 发表于 2020-12-7 16:05
cxonet 发表于 2020-12-7 16:18
学习学习,多谢分享
zhaoyf18 发表于 2020-12-7 16:22
不错的文章,可以补一下相关知识。
行走悟人生 发表于 2020-12-7 18:06
make一下 多谢
东皇神乐 发表于 2020-12-9 13:50
每次看这个都很头痛,认真看完一遍,感觉懂了,过段时间又发现自己没有懂@-@
pearpear888 发表于 2020-12-10 11:07
之前对http的知识一直欠佳,确实该补补了,感谢楼主
tomtomlile 发表于 2020-12-10 11:36
学习中,非常感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表