http请求协议

本文详细介绍了HTTP协议的工作原理,包括请求协议(方法、URL、头部信息)、响应协议(状态码、头部信息)以及常用状态码的含义。重点讲解了无状态连接、一次连接和HTTP状态码的分类。涵盖了HTTP服务器的行为和关键概念如Cookie和Session。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. HTTP 协议
超文本传输协议(HyperText Transfer Protocol),是一种用于在服务端和客户端之间传输超文本的应用层协议。

超文本(HyperText),超文本就是指 含有指向其他资源连接内容的文本。超文本不仅仅是文字,包括图片、音频、视频等流媒体,以及超链接,点击超链接可以跳转到其他页面,每个页面都可以这样跳来跳去,形成一个网络。
协议就是一种约定,规定好一种信息的格式后,发送方和接收方都需要按照这种格式来 发送信息 和 接收信息。
HTTP是无状态协议,一旦数据交换完毕,服务器和客户端之间的连接就会关闭。并且每一次请求都是相互独立的,当前请求不会记录上一次请求的记录(这就引出了后面的Cookie和Session)。
一次连接:客户端发送的每次请求都需要得到服务器的响应,从一次请求的建立连接到关闭连接的过程,即为“一次连接”。
HTTP协议包括:HTTP请求协议和HTTP响应协议。

2. HTTP 请求协议
请求行

请求方法
URL路径
协议/版本号,比如:HTTP/1.1
请求头(若干消息头,由W3C定义的具有特殊含义的kv键值对)

Accept:告诉服务器,浏览器支持什么格式数据类型,比如:Accept:text/html 或 application/json。
Host:服务器的域名
User-Agent:服务器可以通过 User-Agent 判断用户使用该软件的应用类型、操作系统、版本号等信息。
Cookie:服务器给客户端传输的HTTP请求状态,比如验证用户是否登录。
Content-Type:客户端发送的实体数据类型,比如:Content-Type: text/html 或 application/json。

空白行

  • 没有任何内容,仅用于分隔请求头和请求体。

请求体

  • POST请求方法的请求参数及值。
  • GET请求方法的请求参数及值是包含在请求资源路径URL中的
  • 3. HTTP 响应协议
    状态行

    协议/版本号,比如:HTTP/1.1
    HTTP状态码
    响应头(若干消息头,由W3C定义的具有特殊含义的kv键值对)

    Allow:服务器支持的请求方法。
    Content-Length:响应体的字节长度。
    Content-Type:响应体支持的实体数据类型。
    Location:请求资源可替代的备用的另一地址,同时设置HTTP状态码为 302。
    Server:服务器的名称。
    空白行

    没有任何内容,仅用于分隔响应头和响应体。
    响应体

    服务器返回给浏览器的处理结果(请求需要得到的具体数据)。

    4. HTTP 状态码
    HTTP服务器在推送响应包之前,会 根据本次请求的处理情况,将HTTP状态码写入到响应包中的状态行。
    如果HTTP服务器针对本次请求,返回了对应的资源文件。通过HTTP状态码通知浏览器该 如何处理这个结果。
    如果HTTP服务器针对本次请求,无法返回对应的资源文件。通过HTTP状态码解释 不能提供服务的原因。

    1xx - Informational - 服务器正在处理请求

    100 - Continue - 请求者继续提出请求,服务器返回此代码表示已经收到请求的一部分,正在等待其余部分。
    101 - Switching Protocols - 请求已经要求服务器切换协议,服务器已经确认并且做好了切换协议的准备。
    2xx - Success - 成功响应

    200 - OK - 服务器成功处理了请求。
    201 - Created - 请求成功,并且服务器创建了新的资源。
    202 - Accepted - 服务器已接受请求,但并未处理。
    204 - No Content - 服务器成功处理了请求,但未返回任何内容。
    206 - Partial Content - 客户端进行了范围请求(Content-Range),服务器成功返回了部分资源。
    3xx - Redirection - 重定向(需要进行附加操作以完成请求)

    301 - Moved Permanently - 永久重定向,表示请求的资源已经永久的搬到其他位置了。服务器返回此响应时,会根据响应包中响应头的 Location属性的值,自动将请求转到新的 URI地址。(默认情况下,永久重定向是会被浏览器缓存的)
    302 - Found - 临时重定向,表示请求的资源临时的搬到其他位置了。同样的,服务器会根据响应包中响应头的 Location属性的值,自动将请求转到新的 URI地址。(默认情况下,以GET重新发出请求;如果发送POST请求访问 /a,重定向到 /b,浏览器仍会使用 GET方法向 /b 发送请求,会导致数据丢失)
    303 - See Other - 表示请求资源存在另一个URI,必须使用GET定向获取请求资源。与302的功能一样,区别只是303明确了客户端必须使用GET方法访问。
    304 - Not Modified - 资源已经找到了,但是不满足条件,不会将资源返回给客户端。(与重定向无关~)
    307 - Temporary Redirect - 临时重定向,与302不同点是:不允许方法从POST改成GET。
    308 - Permanent Redirect - 永久重定向,与307是一对。
    4xx - Client Error - 客户端错误

    400 - Bad Request - 错误的请求,请求协议中有语法错误,导致客户端不理解。
    401 - Unauthorized - 表示发送的请求需要通过HTTP认证,请求时未提供授权 或者 提供了错误的授权时会先出现。对于需要登陆的网页,服务器可能会返回此响应。
    403 - Forbidden - 表示对请求资源的访问被服务器拒绝了,一般是未获得文件系统的访问权限。
    404 - Not Found - 服务器上找不到请求资源 或者 请求资源的路径错误。
    405 - Not Acceptable - 服务器不支持当前方法,比如:某些资源只支持 POST请求,发起 GET请求时,服务器会返回改状态。
    5xx - Server Error - 服务端错误

    500 - Internal Server Error - 服务器内部发生错误,一般是因为 Web应用出现bug 或者 代码有bug。
    502 - Bad Gateway - 服务器作为网关或代理,从上游服务器中收到无效响应。
    503 - Service Unavailable - 服务器超负荷 或 正在停机维护,无法处理请求。

    5. HTTP 服务器
    首先,HTTP服务器可以接受来自浏览器发送的HTTP请求协议包,并自动对HTTP请求协议包的内容进行解析。
    其次,解析后能够自动定位到被访问的资源文件,并将定位到的资源文件内容写入到HTTP响应协议包中。
    最后,负责将HTTP响应协议包推送会发起请求的浏览器上。

    HTTP服务器是服务器的一种,其行为与HTTP协议相关,Tomcat就是一种HTTP服务器。


     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值