HTTP协议

文章目录

  • HTTP协议
    • URL
    • HTTP请求
      • 1. 首行
        • GET VS POST
      • 2. 请求头--报头(header)
        • Cookie
    • HTTP响应
      • 状态码(常见)

HTTP协议

HTTP属于是应用层最广泛使用的协议

HTTP协议是一个行文本的协议,包括两部分(请求,响应)
HTTP协议_第1张图片

URL

俗称网址,唯一资源定位符,标示互联上的唯一的资源的位置

URL 最关键的四个部分

  1. 域名/IP
  2. 端口号
  3. 带层次的路径
  4. 查询字符串

https://www.sogou.com/省略了端口号

省略端口的时候,浏览器会提供默认端口,http默认端口号80.https,默认端口是443

"/“是路径,没省略只是有点短 代表"根目录”

URL带有query string 是以**“?”**开头,以键值对的方式组织,键值对之间使用&分隔,键和值之间使用=分隔

https://www.sogou.com/sogou?query=%E7%BD%91%E9%A1%B5%E4%BC%A0%E5%A5%87(https://www.sogou.com/sogou?query=网页传奇)

URL有些字符是有特点含义的就需要对内容进行重新编码,如果不编码,直接写中文,可能浏览器就无法正确识别

HTTP请求

1. 首行

包含三个部分,之间使用空格来区分

HTTP的方法(method) URL 版本号

方法描述请求的语义,在实际开发中,最常见的是两个GET ,POST


GET方法

GET是最常用的HTTP方法,常用于获取服务器上的某个资源,

在浏览器直接输入URL,此时浏览器就会发送出一个GET请求

HTML中link,img,script等标签,也会触发GET请求

GET请求特点:

  • 首行的第一部分为GET
  • URL的query stirng可以为空,也可以不为空
  • header部分有若干个键值对
  • body部分为空

POST方法

POST方法也是一种常见的方法,多用于提交用户输入的数据给服务器(登录页面)

通过HTML中的form标签可以构造POST请求,或者使用JavaScript的ajax也可以

构造POST请求

POST请求的特点

  • 首行的第一部分为POST
  • URL的query string一般为空(可以不为空)
  • header部分有若干个键值对结构
  • body部分一般不为空

GET VS POST

GET 请求和 POST请求底层都是基于TCP/IP协议实现的,使用任意一个,都可以实现客户端和服务端的双向交互

本质的区别

在规范中的,定义GET请求是用来获取资源的,就是进行查询操作的.而POST来进行添加,修改和删除等操作

在约定中,GET和POST的参数传递是不同,GET请求是将参数拼加到URL进行参数传递,而POST是将参数写入到请求正文传递的

非本质区别

  1. 缓存不同

​ GET请求一般会被缓存,比如常见的CSS,JS,HTML,请求都会被缓存,

​ 而POST请求默认是不进程缓存的

  1. 参数长度不同

GET请求的参数是通过URL传递的,而URl的长度是有限制的

POST请求参数是存放在请求正文(request body)中的,没有大小限制

  1. GET回退和刷新不同

GET请求可以直接进行会退和刷新,不会对用户和程序产生任何影响

POST请求如果直接回滚和刷新将会把数据再次提交

  1. 历史记录不同

GET请求的参数会保存在历史记录中

POST请求的参数不会保留到历史记录中

  1. 书签不同

GET请求的地址可被收藏为书签

POST请求的地址不能被收藏为书签


2. 请求头–报头(header)

header的整体的格式是"键值对"结构

每个键值对占一行,键和值之间使用分号分隔

HOST

描述了服务器所在的地址和端口

大概率和URL中是一样的

Content-Length

表示body中的数据长度

Content-Type

表示请求的body数据格式

如果是GET请求,没body,请求中没有值俩字段

如果是POST请求,有body,则必须有这俩字段

User-Agent(UA)

现在的User-Agent主要区分PC和移动

Referer

表示当前这个页面是从哪个页面跳转过来的

如果直接在浏览器中输入URL,或者直接通过收藏夹访问页面时是没有Referer的


Cookie

Cookie是非常重要的header属性,本质上是浏览器给页面提供的本地储存数据的机制,网页默认是不允许访问你计数的的硬盘的,Cookie浏览器对于访问硬盘做出了明确的限制,Cookie是通过键值对的方式来组织数据的

  • Cookie从哪来的

    Cookie中的数据是来自于服务器,服务器会通过HTTP响应的,报头部分(Set-Cookie字段),服务器来决定,浏览器Cookie要存什么

  • Cookie是在哪存的

    可以认为是存在于浏览器中,存在于硬盘的,Cookie存的时候,是按照浏览器+域名维度进行细分的,不同的浏览器,各自存各自的Cookie,不同的浏览器不同域名,对应不同的Cookie

  • Cookie要到哪去的

    回到服务器

客户端会通过Cookie来保存当前用户使用中间状态

当客户端访问浏览器的时候,就会自动的把Cookie的内容 带入到请求中,服务器就能够知道现在客户端是处于何种状态

当浏览器保存好Cookie之后,后序再给服务器发生请求的时候,就会自动带上这样的Cookie


  1. 空行

​ 表示header的结束标志

  1. 正文(body)

    由程序员定义

HTTP协议,程序可以自定义的

  1. URL中的路径
  2. URL中的query string
  3. header中的键值对
  4. header中的Cookie的键值对
  5. body

HTTP响应

状态码(常见)

  1. 200 OK 访问成功
  2. 404 Not Found(访问的资源不存在,服务器上没找到)
  3. 403 Forbidden 访问被拒绝(没有权限)
  4. 302 重定向
  5. 500 服务器内部错误(服务器代码抛异

状态码分类:

|

类别 原因短语
2XX Sucess(成功状态码) 请求正常处理完毕
3XX Rediretion(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误代码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

|

你可能感兴趣的:(JavaEE,java,后端)