HTTP协议备忘录

简介

众所周知,http简单来说是超文本传输协议(Hyper Text Transfer Protocol),他基于TCP/IP协议来传递数据,查询结果,html,图片等相关信息
此处拿出小本本记录一下:HTTP协议工作于客户端和服务器之间的,浏览器作为客户端通过url向web服务器发送请求,然后web服务器通过相关处理,再把请求结果或者错误信息返回给浏览器端
这里只做简单描述一下客户端和服务器在nginx和php之间的交互

浏览器通过url向服务器发送请求
nginx
访问nginx.conf中配置的location指向路径
加载nginx的fast-cgi模块
fast-cgi监听127.0.0.0:9000
location指向路径把请求发送到127.0.0.0:9000
php-fpm监听127.0.0.0:9000
php-fpm接收请求,启用子进程处理请求
php-fpm处理完请求,将请求发送给nginx
nginx将结果通过http返回给客户端

具体想要做更深入的了解,可以找度娘查查cgi协议,fast-cgi,php-fpm三者之间的关系

特点

  1. 规模小通信快:客户端向服务器发送请求的时候,只需要发送方法和路径(get,post等等,和一串url请求)
  2. 灵活:http允许传输任意类型的数据对象,查看具体类型可以查看Content-Type
  3. 无连接:无连接不是不连接,而是没戏连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,立刻断开
  4. 无状态:http协议是无状态协议,无状态协议是指对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则他必须重传,这样可能导致每次传输的数据量增大

Request Headers

在这里插入图片描述
Content-Type: text/plain; charset=UTF-8(服务端发送的类型及采用的编码方式)
Origin(用来说明最初请求是从哪里发起的)
Referer: http://localhost/index.php(服务器是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从你的主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击你的主页上的链接访问他的网站)
User-Agent: Mozilla/4.0(告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本)
Connection: keep-alive(当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接)
Connection: close (代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接)

Response Headers

在这里插入图片描述

Access-Control-Allow-Origin(解决跨域)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服务端响应客户端的时间)
Server:apache tomcat(服务端的Web服务端名)

HTTP状态码(常用)

状态码描述
200请求成功。一般用于GET与POST请求
301永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400客户端请求的语法错误,服务器无法理解
401请求要求用户的身份认证
403服务器理解请求客户端的请求,但是拒绝执行此请求
404服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405客户端请求中的方法被禁止
500服务器内部错误,无法完成请求
502服务器不支持请求的功能,无法完成请求
503作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
504充当网关或代理的服务器,未及时从远端服务器获取请求
505服务器不支持请求的HTTP协议的版本,无法完成处理

GET和POST区别

  1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中
  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制
  3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值
  4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值