HTTP协议常见状态码
状态码的作用
负责标记客户端请求服务器的返回结果,标记服务器端的处理是否正常,通知出现的错误等等职责,借助客户端可以知道客户端是否正常请求服务端。
五大类:
1XX(信息类状态码,接收的请求正在处理)、2XX(成功状态码)、3XX(重定向)、4XX(客户端错误)、5XX(服务端错误)
常见状态码
200:代表OK,服务端正常处理
204:服务器接受的请求已成功处理,但在返回的响应报文中不含实体的主体部分,也就是没有内容
206:部分的内容,如客户端在进行范围请求,服务端成功执行了部分GET请求
301:跳转,永久性重定向,请求的资源已被分配了新的URI,已有应使用现在所指的URI
302: 临时性重定向,请求的资源已经分配了新的URI,希望用户本次用新的URI访问
303:由于请求对应的资源存在另一个URI
304:客户端发送附带条件的请求时,服务器端允许请求访问资源,单一发生请求未满足条件的情况下,直接返回304
307:临时重定向,和302有相同的含义
400:请求报文中存在语法错误,需要修改内容再次发请求
401:代表发送的请求需要有HTTP人认证的认证信息
403:对请求资源的访问被服务器拒绝
404:服务器上无法找到请求的资源
500:服务器端在执行请求发生错误
503:服务器暂时处于超负载或者停机维护无法处理请求

HTTP协议的工作特点和工作原理
工作特点:
基于B/S模式,通信开销小、简单快速、传输成本低,比如打开浏览器就可以访问,使用灵活、可使用超文本传输协议(HTML)、节省传输时间、无状态
工作原理:
客户端发送请求给服务器,创建一个TCP连接,指定端口号。默认80,连接到服务器,服务器监听浏览器请求,一旦监听到客户端请求,分析请求后,服务器会向客户端返回状态信息和数据内容
HTTP协议常见请求/响应头
Content-Type(请求的实体对应的信息包括字符集)、Accept(指定客户端能接收的内容类型)、Origin(最初的请求来源于哪里,主要用户post请求)、Cookie(代表http请求发起时,发送给服务器端cookie的值)、Cache-Control(指定请求和响应的缓存机制)、User-Agent(用户信息)、Referrer(上级请求路径)、X-Forwarded-For(请求端真实的IP,做代理时可以用它获取)、Access-Control-Allow-Origin(允许特定的域名访问,通常用于跨域)、Last-Modified(请求资源的最后响应时间)

GET和POST请求的区别

1:在浏览器端,反复返回上一页在GET请求上是没有什么多大变化的,而POST就会重新提交
2:GET可以被收藏为书签,而POST不可以被收藏为书签
3: GET请求可以被浏览器缓存,POST不会
4:GET在历史记录中会保存参数,而POST不会
5:数据长度中GET有限制,最大长度取决于浏览器大小,一般2048个字符,POST没限制
6: GET在允许的数据类型也有差别,GET只允许ASC2这样的字符,POST没限制,也允许二进制数据,GET只允许GB2312
7:GET的安全性差点,是URL的一部分;POST相对来说安全点儿,不会被保存到服务器WEB日志中
8:效率上GET比POST快,以下是原因

①.post请求包含更多的请求头
  因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如content-type),这其实是微乎其微的
②.post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
  post请求的过程:
  1.浏览器请求tcp连接(第一次握手)
  2.服务器答应进行tcp连接(第二次握手)
  3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
  4.服务器返回100 continue响应
  5.浏览器开始发送数据
  6.服务器返回200 ok响应
  get请求的过程
  1.浏览器请求tcp连接(第一次握手)
  2.服务器答应进行tcp连接(第二次握手)
  3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
  4.服务器返回200 ok响应
  也就是说,目测get的总耗是post的2/3左右
③.get会将数据缓存起来,而post不会
使用ajax采用get方式请求静态数据(比如html页面,图片)的时候,如果两次传输的数据相同,第二次以后耗费的时间将在10ms以内(chrome测试),而post每次耗费的时间都差不多……
  chrome下和firefox下如果检测到get请求的是静态资源,则会缓存,如果是数据,则不缓存,但是IE这个傻X啥都会缓存起来

了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别的更多相关文章

  1. HTTP协议、HTTP请求方法、常见状态码、HTTP消息

    HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...

  2. http协议与常见状态码

    什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...

  3. 19. HTTP协议二:HTTP请求与响应、常见状态码

    HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...

  4. HTTP协议及常见状态码

    超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议.它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的. HTTP遵循经典的客户端-服务端模型,客户端打开一 ...

  5. Http常见状态码说明

    一些常见的状态码为: 200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码.代码 说明100 ...

  6. http常见状态码有哪些?

    ajax常见面试题 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个 ...

  7. 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码

    一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...

  8. HTTP常见状态码(404、400、500)等错误

    一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 ...

  9. Python Requests库 Get和Post的区别和Http常见状态码

    (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024 Byte,而P ...

随机推荐

  1. 重温MFC

    1. Button控件 2. 旋转和高级编辑控件 3. 标签控件和属性页 4. 列表控件 5. 树控件 6. 进度条控件和滑动条控件 7. 滚动条 8.工具栏和状态栏

  2. 如何使用 volatile, synchronized, final 进行线程间通信

    原文地址:https://segmentfault.com/a/1190000004487149.感谢作者的无私分享. 你是否真正理解并会用volatile, synchronized, final进 ...

  3. test for python socket

    server: #!/usr/bin/python import socket import threading import time def tcplink(sock, addr): print ...

  4. UUID.randomUUID().toString()

    UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法.UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机 ...

  5. Base64图片编码优化

    通过对图片进行base64编码,将base64(或其他数据)内嵌在image标签的属性当中(或者CSS中或JavaScript中),可以实现将图片直接嵌入代码中的目的,如此一来,可以减少HTTP请求, ...

  6. MySQL刷新事务日志级别设置

    标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 # if set to 1 , InnoDB will flush (fsync ...

  7. ferror,clearerr和EOF含义

    1.我们并不是实时操纵文件,也不是实时生效,它依赖于缓冲区.非缓冲模式编程与常规区别,就是实时与不实时的区别. 2.//fgetc fputc, fgets fputs, fgetwc fputwc, ...

  8. win32 dll工程开发创建对话框

    界面编程的CreateWindow函数需要instance,只要获取到dll工程的main的instance参数,就可以使用CreateWindow函数了. 创建对话框需要CreateDialog函数 ...

  9. css变量的用法——(--cssName)

    CSS变量,又称——CSS自定义属性,现在很多CSS预处理/后处理程序已作了相关快捷的编译处理, 基本用法有哪些呢,我们先看一个简单的栗子:——要求,创建一个五个块元素居中的分栏样式,奇数和偶数同高不 ...

  10. python中的函数对象与闭包函数

    函数对象 在python中,一切皆对象,函数也是对象 在python语言中,声明或定义一个函数时,使用语句: def func_name(arg1,arg2,...): func_suite 当执行流 ...