http八种请求方式以及其他注意点


前言

提示:关于前端学习中,需要了解到的http相关知识。


提示:以下是本篇文章正文内容,下面案例可供参考

一、HTTP的八种请求方式来表明Request-URL指定的资源的不同操作方式

HTTP 1.0定义了三种请求方式: GET、POST和HEAD方式

HTTP 1.1新增了五种请求方式:OPTIONS、PUT、DELETE、TRACE和CONNECT方法

序号方法描述
1GET请求指定的页面信息,并返回实体主体
2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改
4PUT从客户端向服务器传送的数据取代指定的文档的内容
5DELETE请求服务器删除指定的页面
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
7OPTIONS允许客户端查看服务器的性能(例如服务器支持的http方式)
8TRACE回显服务器收到的请求,主要用于测试或诊断
GET和POST方式的对比
对比项GETPOST
后退按钮/刷新无害数据会被重新提交(浏览器应该告诉用户数据会重新提交)
缓存能被缓存不能缓存
书签可收藏为书签不可收藏为书签
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded或multipart/form-data,为二进制数据提供多重编码
历史参数保留在浏览器历史中参数不保留在浏览器历史中
数据类型的限制只允许ASCII字符(用二进制对应的字符)没有限制,也允许二进制数据
数据长度的限制GET方法由于是想URL添加数据,URL的长度受限在2K左右无限制
安全性与POST相比,GET的安全性较差,因为发送的数据是URL的一部分,故在发送密码或者其他敏感信息时绝对不用使用GETPOST比GET更安全,因为参数不会被保存在浏览器历史或web服务器日志中
可见性数据在URL中对于所有人都是可见的数据不会显示在URL中

二、实体主体内对象的媒体类型content-type

(请求头响应头都有,适用于请求体和响应体)

  1. application/x-www-form-urlencoded

    浏览器的原生form表单

  2. multipart/form-data

    一种常见的POST提交方式,通常表单上传文件时使用该种方式

  3. application/json

    告诉服务器消息主体是序列化后的JSON字符串

  4. text/xml

    主要用来提交XML格式的数据

  5. text/plain

    提交的为文本类型

三、常见的请求头

  • Accept: text/html,image/* // 浏览器接受的数据类型
  • Accept-Charset: ISO-8859-1 // 浏览器接受的编码格式
  • Accept-Encoding: gzip,compress //浏览器接受的数据压缩格式
  • Accept-Language: en-us,zh- //浏览器接受的语言
  • Host: www.it315.org:80 //(必须的)当前请求访问的目标地址(主机:端口)
  • If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --浏览器最后的缓存时间
  • Referer: http://www.it315.org/index.jsp – 当前请求来自于哪里
  • User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) --浏览器相关信息
  • Cookie:name=eric // 浏览器保存的cookie信息
  • Connection: close/Keep-Alive // 浏览器跟服务器连接状态。close: 连接关闭 keep-alive:保存连接。
  • Date: Tue, 11 Jul 2000 18:23:51 GMT // 请求发出的时间

其中keep-alive:

  • http是基于TCP协议的,但是通常在进行一次请求和响应结束后会立刻中断;
  • 在http1.0中,如果想要继续保持连接:
    • 浏览器需要在请求头中添加 connection: keep-alive;
    • 服务器需要在响应头中添加 connection:keey-alive;
    • 当客户端再次放请求时,就会使用同一个连接,直接一方中断连接;
  • 在http1.1中,所有连接默认是 connection: keep-alive的;
    • 不同的Web服务器会有不同的保持 keep-alive的时间;
    • Node中默认是5s;

四、响应状态码

分类类别原因短语
1XXInformational(信息性状态码)接受的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错
  • 200 OK 的响应结果表明请求被正常处理
  • 204 No Content 服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分
  • 206 Partial Content 客户端进行了范围请求

301和302的区别?

  • 301 Moved Permanently 永久性重定向。表示请求的资源已被分配了新的URI,以后应使用新URL。(原地址的信息被作废,并会转接到新的URL中)
  • 302 Found 临时性重定向。表示请求的资源已被分配了新的URI,本次请求暂且使用新URL。(原地址的信息并没有作废)
  • 303 See Other 由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
  • 304 Not Modified 客户端发送的附带条件的请求时,服务器允许请求访问资源,但服务器端资源未改变,可直接使用客户端未过期的缓存。(协商缓存)
  • 400 Bad Request 请求报文中存在语法错误,不能被服务器所理解。
  • 401 Unauthorized 请求需要通过HTTP认证。第一次返回,会弹出认证窗口,第二次返回,表示认证失败。
  • 403 Forbidden 请求资源的访问被服务器拒绝了。
  • 404 Not Found 服务器上没有请求的资源
  • 500 Internal Server Error 服务器在执行请求时发生了错误。
  • 503 Service Unavailable 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

五、HTTP协议的特点

1、无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

2、无状态

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

3、简单快速

客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

4、灵活

HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

5、支持B/S及C/S模式

[参考自](https://codingwithalice.github.io/archive/)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值