HTTP协议之基本概念

本文章只使用与小白初学HTTP协议的时候理解总结。其中包含很多第一次使用时的基本概念。

<?php 

1.用途: 做webserver、 大型框架rest 都需要HTTP协议
			http协议 + xml = webserver
			HTTP协议 + json = Rest
			http协议 + xml/json = API 
		做信息采集,小偷程序
		学习ajax很容易理解

2.概念:协议就是双方或者多方共同遵守的一个规范,这个规范就是协议
		HTTP协议  tcp/ip 协议 。。。。。

		web服务器(可能是Apache、Nginx、...、iis)	
		客户端(浏览器)

3.格式
/**
	telnet 窗口 发送GET POST
**/
	HTTP协议不一样要浏览器发,用 telent 窗口发
		1.telent IP 80
		2.ctrl + ] //开启回显功能

/---------------------------------------------------------------------------------------/
	telnet的GET请求
		GET /HTTPxieyi/day1/02.php HTTP/1.1
		Host: localhost
		空行

		请求方法  请求路径  所用的协议版本
		请求头信息(头信息结束后有一个空行(必须要有),用来区分主体信息)		

/---------------------------------------------------------------------------------------/
	telnet的POST请求
		POST /HTTPxieyi/day1/03.php HTTP/1.1
		Host: localhost
		Content-type:application/x-www-form-urlencoded
		Content-length: 24
		空行
		空行
		username=shangsan&age=28


		1.POST 比GET多了主体信息
			//GET的主体信息可以是空
		2.头信息里POST要写主体的长度
			//Content-length: 24
		3.POST 必须要写一下代码
			//Content-type:application/x-www-form-urlencoded

/---------------------------------------------------------------------------------------/
	请求方法(GET/POST/HEAD/PUT/DELETE/TRACE/OPTIONS)
	请求路径:url的一部分
	协议版本:只有 HTTP/1.1 
/---------------------------------------------------------------------------------------/
	响应示例
		HTTP/1.1 200 OK 
		Content-type:text/html 
		Content-length:5

		hello

	响应:
		响应行
			协议版本  状态码  状态文字
		响应头信息
			key: value
			key: value
			content-length: 主题长度
		空行
		相应主体
			HELLO(内容)

/---------------------------------------------------------------------------------------/
/---------------------------------------------------------------------------------------/

5.请求方法讨论
	请求方法(GET/POST/HEAD/PUT/DELETE/TRACE/OPTIONS)
		虽然这些方法是HTTP协议的,但是外部的WEB SERVER 不一定支持(人家对面的服务器不一定让你用)
	HEAD 和 GET 基本一样,只是不返回内容
		比如,我们只是确认内容(判断照片还存在,不需要返回内容,用HEAD合适)
	TRACE: 是使用了代理上网的时候,查看代理有没有修改我们的HTTP请求,我们用TRACE测试,该网站把最后的请求发送过来
	OPTIONS:返回服务器可用的请求方法

6.响应头信息中的状态码和状态文字
	状态码是用来放映服务器的响应情况
		200 OK  	 404 NOT FOUND
	1XX 请求被接受		实验环境下使用
	2XX 成功			操作成功收到,理解并且接受
	3XX 重定向 			为了完成请求,必须采取进一步的措施
	4XX 客户端错误 		请求的语法有错误
	5XX 服务端错误

	200 成功返回网页
	301/2 永久/临时重定向(做SEO的时候会用到)
	304 Not Modified 未修改(说明取得是缓存)
	307 重定向中保持原有的请求数据
	404 请求的网页不存在( 可以为404找一个页面的美化 )
	503 服务器暂时不支持
	500 服务器内部错误

	关于代码304的分析,表示的是浏览器中存在这个缓存,可以极大的减轻服务器的压力
	当服务器传给浏览器数据的时候,会返回一个数据(在Response Headers)
		Date:Wed, 19 Oct 2016 08:30:14 GMT
		ETag:"1ce8-53f2f64e26493"
	当浏览器刷新的时候,会发送给服务器我保存的缓存的信息(在Request Headers 中)
		If-Modified-Since:Wed, 19 Oct 2016 03:27:52 GMT
		If-None-Match:"1ce8-53f2f64e26493"
	服务器就会返回304代码,缓存未修改

	301/302 做SEO的明白
		重定向 header('location: http://www.baidu.com');
			   header('location: http://www.baidu.com',true,301); //永久重定向,true表示使用301头信息替换原来的头信息
		重定向可能会导致数据丢失,
		比如 04.html通过POST传送数据到 05.php ,但是 05.php 302重定向 到 06.php了,导致数据丢失了
			因为 04.html 到 05.php 是 post 请求,但是到了 06.php 就是 get 请求了
		解决方法,使用307==>重定向中保存原有的请求数据


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值