如何用个门户网站做销售,电商网站开发实训心得,北京大学廉政建设研究中心网站,建一个企业网站要花多少钱目录 前言
一、认识URL
二、认识HTTP样例
三、HTTP的报头内容
1.url
2. Content-Type
3.Method 方法
1.GET方法
2.POST方法
4、状态码
5.cookie和session 前言
我们知道#xff0c;协议就是一种约定#xff0c;客户端与服务端统一的用这种约定进行传输数据。我们…目录 前言
一、认识URL
二、认识HTTP样例
三、HTTP的报头内容
1.url
2. Content-Type
3.Method 方法
1.GET方法
2.POST方法
4、状态码
5.cookie和session 前言
我们知道协议就是一种约定客户端与服务端统一的用这种约定进行传输数据。我们也进行了自定义协议的序列化与反序列化了解到了协议是如何进行约定的。今天我们来学习一下被广泛运用的应用层协议——HTTP超文本传输协议。
一、认识URL
在我们访问别人的网站时通常会输入网址或者点击别人的链接跳转到该网址进行访问我们平时说的网址也就是url。 比如说百度的链接如下https为他的协议方案名比http多了加密www.baidu.com为他的服务器地址也是域名会通过DNS域名解析将该域名转化为一个IP地址/为访问他的web根目录。 https://www.baidu.com/ 再比如说我们百度搜索caixukun就会访问到/s目录?后面就可以带参数了wdcaixunkun为我们的搜索内容后面又跟着很多参数
https://www.baidu.com/s?wdcaixukunrsv_spt1rsv_iqid0xa125eeac0124f4d8issp1f8rsv_bp1rsv_idx2ieutf-8rqlangcntnbaiduhome_pgrsv_enter1rsv_dltboq%25E8%2594%25A1%25E5%25BE%2590%25E5%259D%25A4rsv_btypetinputT1356rsv_t30ce7B8KPAgBA5MzP%2Fj0%2Bouk7Tznt866T6e0B%2Fv5EUHIzUkxc34g%2BwyPnOzHtYLvNupJrsv_pqb89a996d00b45a5crsv_sug338rsv_sug122rsv_sug7100rsv_sug20rsv_sug41356rsv_sug1
因此我们平时访问网站本质上就是在进行进程间通信只不是是跨网络的通过域名转化为IP地址端口号是协议默认的。
二、认识HTTP样例
如下是一个http请求样例有 请求行、请求报头、空行、请求参数请求参数可以为空 GET 为http请求方法 / 为请求资源的目录这是web更目录 HTTP/1.1是http协议版本。
请求报头中的内容我们暂时不管等第三章来看这里只是了解一下http的样子。 对于http协议请求报头是按 \r\n 做结尾的因此可以通过读取到空行的\r\n表示读完了请求报头。而正文请求参数的读取完毕是在请求报头中有一个参数Content_Length来表示正文的长度知道了长度之后再拿着这个长度去读正文读到了这个长度表示正文读取完毕。 反序列化也是按照\r\n来进行截取至此服务器就能清楚我们的请求同时给我们的请求做出响应。 其中http的响应字段也是类似的其中浏览器会将响应正文做解释就变成我们看到的网页了。 如下是http的响应字段 三、HTTP的报头内容
1.url
前面我们的请求行中间的内容为目录默认访问的是web根目录代表默认访问该网站的首页 如果我们指定访问某个文件夹下某个资源那么请求行中url内容也会随之改变参数也可以这样传递 实际上我们可以通过http协议截取出你的url是什么如果是根目录那么就拼接首页并给你首页网站。
如果是其他目录只要我有该目录下的该文件我就给你如果没有我就404 not fount。代码逻辑如下。 2. Content-Type
Content-Type 用于指示响应中包含的数据的类型如果你的html里面有图片、视频等链接http进行解析正文的时候发现有链接那么他会再次发送请求该链接。如下 浏览器虽然足够智能但是仍需要我们指定类型让浏览器进行渲染因此我们需要给响应字段添加Content-Type让浏览器知道如何渲染。
Content-Type 扩展名对照表
因此我们需要截取出请求报头中的url分析url的后缀是什么根据后缀进行返回内容 3.Method 方法
请求行的第一个参数就Method方法最重要、也是最常见的是 GET 和 POST 。 我们通常使用GET 请求去获取资源比如网页、图片等。 POST请求通常用于提交表单数据、上传文件等操作。 1.GET方法
GET方法请求参数通常以 URL 的查询字符串的形式附加在 URL 后面html中如果不写method默认方法也是“GET” 这样就可以通过截取的方式把用户输入的数据给到后台。后台根据数据再给你提供服务。
2.POST方法
post方法会将表单的请求参数放在正文部分私密性会更强一些。 GET与POST的区别 GET是在url传递参数POST是在请求正文传参GET在url传参字节个数有限POST参数字节没有限制GET请求通常用于请求服务器发送某个资源POST请求通常用于向服务器提交数据GET私密性比POST差私密性不等于安全性GET和POST都不安全都是明文传输https才更安全 4、状态码
在http的响应行中有状态码这个东西访问成功状态码是通常200。 如果你请求的文件不存在状态码通常是404 描述为not fount 状态码并不是固定的而是大多是大家默认遵守的规矩你可以逾矩但是会让其他程序员看不懂。 重定向是例外不能乱写。 那我们就可以去进行各种判断看是什么问题然后给你返回对应的状态码与状态码描述。其他的我们都能理解这个重定向状态码是什么情况呢
HTTP报头中还有一个Location字段客户端会根据该字段中指定的 URL 自动进行重定向如下代码当你的报头中状态码为307并且有Location字段(缺一不可)其他内容也就不重要了访问到这个网站即会重定向到你所设置的网站内。 其中307代表临时重定向请求的资源暂时移动到了新位置但所有后续的请求应该继续使用原始的 URL。
如果状态码是301表示请求的资源已永久移动到新位置且所有后续的请求应该使用新的 URL。这意味着浏览器在收到 301 响应后应该自动更新其缓存的链接并使用新的 URL 进行所有后续的请求。
5.cookie和session http的请求是无连接和无状态的。无连接代表像服务器发送请求服务器对你的请求做出响应然后就结束了后续你要再次跳转或者做其他操作又会发送新的请求。无状态是说服务器根本就不知道你请求了多少次你是一直在做刷新操作还是只访问了一次我不知道耶不关心我只知道根据你的请求做出响应。但是我们实际使用的时候比如抖音登录成功后关闭抖音再次访问发现他还是记得我我仍处于登录状态这是cookie在起作用。 当我们将账号和密码输入给服务器时服务器会将你的账号和密码与数据库做对比如果发现有该用户就会response响应用户登录成功了同时该响应里面有Set-Cookie字段该字段的内容就是你的账号和密码。
浏览器发现response响应里面有该字段就会利用自动保存cookie字段当用户再次访问该服务器时浏览器会自动将cookie里面的内容取出并帮我们在请求报头添加Cookie字段该字段的内容就是你之前输入的账号和密码这样我们第一次登录后后面都不需要再次登录。 同时后续访问时request请求报头就自动添加上了Cookie 但是如果仅仅只有cookie有坏人想截取我的http请求可太简单了直接获取到我的用户名和密码拿着我的账号去干坏事这样肯定不好。
因此服务器在我登录之后会把我输入的数据保存到session中同时通过键值对的唯一性响应回来的Set-cookie为这个session的id值这样客户端就收到一个Set-cookie:sessionid。以后就不用在明文传输而是依靠这个sessionid进行验证用户了。
当然这样我们能保证自己的账号不会被盗但是别人依然可以利用sessionid去干坏事比如把账号里面的记录删一删等等因此还是得需要服务器通过判断客户端的ip地址是否一致、或者sessionid持续时长等来更好的保护客户端使用者。 重要报头字段 Content-Type: 数据类型(text/html等)Content-Length: Body的长度Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;User-Agent: 声明用户的操作系统和浏览器版本信息;referer: 当前页面是从哪个页面跳转过来的;location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能 目前已经能通过http进行数据传输了但是黑客仍然有各种办法截取用户的信息因此需要对http进行加密提出了https。https我们下一章见