网络原理之HTTP

网络原理之http

1.http原理

1.1http协议

应用层协议是自己定的。但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。

1.2URL

平时我们俗称的 “网址” 其实就是说的 URL
在这里插入图片描述

1.3urlencode和urldecode

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现。

比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。

转义的规则如下:
将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

urldecode就是urlencode的逆过程;

1.4http协议格式

在这里插入图片描述

Request

首行(请求行): [方法] + [URL] + [版本]
Header(请求报头): 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body(请求正文): 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-
Length属性来标识Body的长度;

Response

首行(状态行): [版本号] + [状态码] + [状态码解释]
Header(响应报头): 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body(响应正文): 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-
Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.

1.5http方法

方法说明
GET获取资源
POST传输实体主体
PUT传输文件
HEAD获得报文首部
DELETE删除文件
OPTIONS询问支持的方法
TRACE追踪路径
CONNECT要求用隧道协议代理连接
LINK建立和资源之间的联系
UNLINK断开连接关系

其中最常用的就是GET方法和POST方法.

GET和POST的区别

GETPOST
后退刷新无害数据会被重新提交
书签可收藏为书签不可收藏为书签
缓存可以被缓存不可被缓存
历史参数保存在浏览器历史中参数不会保存在浏览器历史中
对数据长度限制发送数据时,GET方法向URL中添加数据最大为2048字符无限制
对数据类型限制只允许ASCII字符无限制
安全性安全性差,因为数据是URL的一部分安全,参数不会保存在浏览历史或者服务器日志中
可见性数据在URL中对所有人可见数据不会显示在URL中

1.GET请求只能放在URL中,POST可以放在URL中,也可以放在请求体中(GET没有请求体)

2.URL长度有限,GET请求的数据有限。

3.GET请求的数据在URL中,对所有人可见,相对安全性更低。

1.6http状态码

分类说明
1**信息,服务器收到请求,需要操作者继续
2**成功,操作被成功接收并处理
3**重定向,需求进一步的操作以完成请求
4**客户端错误,请求包含语法错误或者无法完成请求
5**服务器错误,服务器在处理请求的过程中发生错误
状态码
200请求成功,一般用于get和post请求
301永久移动,请求的资源被永久移动到新的URL,返回信息会包含新的URL,会自定向到新的URL。
302临时移动,和301类似,但是客户端可继续使用原来的URL
307临时重定向,和302类似,使用GET请求重定向
304未修改,所请求资源未修改,客户端可在缓存中找到该资源
400客户端请求语法错误
401请求要求用户的身份认证
403服务端理解用户请求,但是拒绝该请求
404服务器无法找到请求资源
405客户端请求的方法被禁止了,URL以及找到,但是服务器提供的方法不包含请求方法
500服务器内部错误
502网关错误

1.7http常见请求报头

1.Content-Type: 数据类型(text/html等)
2.Content-Length: Body的长度
3.Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
4.User-Agent: 声明用户的操作系统和浏览器版本信息;
5.referer: 当前页面是从哪个页面跳转过来的;
6.location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
7.Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

2.session和cookie

2.1用户信息

Http 是一个无状态协议, 就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。这种无状态的的好处是快速。坏处是需要进行用户状态保持的场景时[比如,登陆状态下进行页面跳转,或者用户信息多页面共享等场景],必须使用一些方式或者手段比如: session 和cookie

2.2cookie

cookie是一种在浏览器端解决的方案,将登陆认证之后的用户信息保存在本地浏览器中,后面每次发起http请求,都自动携带上该信息,就能达到认证用户,保持用户在线的作用,具体如下图:
在这里插入图片描述

2.3session

而将用户敏感信息放到本地浏览器中,能解决一定的问题,但是又引进了新的安全问题,一旦cookie丢失,用户信息泄露,也很容易造成跨站攻击,所以有了另一种解决方法,将用户敏感信息保存至服务器,而服务器本身采用md5算法或相关算法生成唯一值(session id),将该值保存值客户端浏览器,随后,客户端的后续请求,浏览器都会自动携带该id,进而再在服务器端认证,进而达到状态保持的效果
在这里插入图片描述

2.4session和cookie

两者有什么区别呢?
1.Cookie以文本文件格式存储在浏览器中,而session存储在服务端
2.因为每次发起Http 请求,都要携带有效Cookie信息,所以Cookie一般都有大小限制,以防止增加网络压力,一般不超过4k
3.可以轻松访问cookie值但是我们无法轻松访问会话值,因此session方案更安全

2.5本地禁止cookie

​ 要使用session,其实还是需要使用cookie机制来保存session id的,那么万一在客户端cookie机制被禁掉了,那session貌似也就无法使用了?其实替代方法是有的经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器

3.简单的html

3.1html介绍

HTML是用于创建网页的语言。我们通过使用HTML标记标签创建html文档来创建网页。HTML代表超文本标记语言。HTML是一种标记语言,它是标记标签的集合。
HTML标签是由尖括号括起来的词,如, 。标签通常成对出现,例如和 。
一对中的第一个标签是开始标签;第二个标签是结束标签。如是开始标签,而是结束标签,我们还可以将开始标签称为起始标签,结束标签称为闭合标签。
HTML文档结构至少要包括head, body两部分.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>html基础</title>
	</head>
	<body>
		<h3>黑芝麻</h3>
	</body>
</html>

3.2常见标签

文本标签

1.段落标签

<p>段落标签使用p表示,是paragraph的缩写</p>

2.标题标签

标题标签h1 ~ h6 标题标签从名字就能看出,是用来定义文字标题的,包括h1-h6,数字越小对应的字体越大 .如下:

<h1>我是一级标题</h1>
<h2>我是二级标题</h2>
...
<h6>我是老六</h6>

表单标签

1.文本框:

input标签

属性:type ,表示文本的类型;
name,表示文本的名称,后端使用name来获取框中的属性值;
value,默认属性框的填充值,用户输入后显示输入的内容
placeholder,文本框内容为空显示的内容;
size,文本框的长度

<input type="text" name="name" value="黑芝麻" placeholder="请输入姓名" size="10">

2.密码框

密码框与文本框类似 , 区别在于type取值不同, 取值为password, 输入时候自动显示为星号,如:

<input type="password" name="password" placeholder="请填写密码">

3.普通按钮

<input type="button" value="登录">

4.提交按钮

当需要提交表单的时候,需要使用提交按钮。提交按钮需要配合form表单才能向服务 器提交数据。如下:

<input type="submit" value="提交">

5.表单

表单使用form来表示,表示提交到的服务器的信息,一般在注册或者登陆两个应用场景中使用 如下:

<form method="post" action="http://how2j.cn/study/login.jsp">
账号:<input type="text" name="name"> <br/>
密码:<input type="password" name="password" > <br/>
<input type="submit" value="登陆">
</form>

action表示将表单提交的后台地址,method="post"表示提交的方式,提交方式有get方式和post方式两种 get和post方式区别 get方式将信息提交到url的后面 提交大小有限制 不适合私有数据 post方式信息是提交实体内容提交大小无限制 适合私有数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值