web基础【HTTP】

1.没有Web服务器,我们不需要提HTTP协议
2.没有Web服务器的时候,只能在资源所在的电脑_上,通过浏览器访问资源
3.有了Web服务器,可以为所有电脑提供服务,只要有网络和Web服务器所在的电脑连接,则,都可以访问web资源
4. IP地址分为内网地址和外网地址
酒店的房价电话: 4529 (内网号)
平时使用的电话: 139XXX (外网号)
我们平时的电脑,一般是没有外网地址

即使我们现在使用了Web服务器,也只能在局域网内有效

在这里插入图片描述

  1. HTTP 是一种纯文本协议,控制信息是纯文本的,但其携带的数据信息不做要求。
    传输的信息 = 控制信息+携带的负荷信息
    主要格式 HTML,css,js的内容
    在这里插入图片描述

  2. URL属于URI的一种具体实现(Unique Resource Location唯一 资源路径)
    一个完整的URL, 一定描述网络.上的唯一的一个资源的

URL 不仅仅可以服务于HTTP协议
在这里插入图片描述
URL最关键的四个部分:

  1. 域名/IP
  2. 端口号
  3. 带层次的路径
  4. 查询字符串 query string

http://web服务器所在/
web服务器所在= web服务器所在的主机+ web服务器所占用的端口:8080
ip地址: 192.168.1.5 / 127.0.0.1
域名: www.baidu.com / www.qq.com

当Web服务器占用的是:80时,由于HTTP协议规定的默认端口就是:80,所以,省略端口信息
192.168.1.5:80 <=> 192.168.1.5

在这里插入图片描述
网络的规定:任意主机在网络上(同一网络),一定是有一个唯一的 ip地址绑定的(酒店的房间都有唯一的一 个房间号)
号码不方便记忆,所以一般会起一些方便记忆的名称(西安厅、北京厅、华清池厅…同理表现为域名(domain)
www.baidu.com / www.qq.com => 20.135.48.9/ 10.17.22.24
背后有个DNS (Domain Name Service)会帮你把域名解析成ip

查询字符串(query string)

跟在路径后边,以问号开头(?),后边是一组 key=value的形式,之间用and符(&)分割
/blog/article.html 不带query string
/blog/article.html?id=1 带一个kv的query string
/blog/article.html?id= 1&name=2 带两个kv
/blog/article.html?id=1 &name= 2&age=3 kv 没有任何规定
主要应用于动态资源请求,资源固定,但内容不固定

#跟一个id(了解即可)

片段标识符(segment)

用来在同一资源上,定位当前显示位置的
https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html#addFirst-E-
展示该资源的哪个位置
完整的URL由:
1.协议号(http://)
2.定位主机= ip/域名+端口(其中,端口可以省略)
3.路径(/index.* 可以省略,写作/)
4.查询字符串
5.片段标识符

省略版本的URL

1.省略协议号    ://www.baidu.com/
http://192.168.1 .5:8080/blog/index.html   当前资源是 http      当前资源用https
点击<a href= "//192.168.1.7:8080/no-such-file">... </a>
http://192.168.1.7:8080/no-such-file      所以新的请求也是http      也会  是https
在http下点击省略协议号的,新的请求也会是http,https同理
2.省略协议号+ web服务器地址
http://192.168.1.5:8080/blog/index.html
<a href= */no-such.html">点击</a>
访问当前资源所在web服务器下的新的路径的资源
http://192.168.1.5:8080/no-such.html

绝对路径(absolute path) vs相对路径(relative path)

背景知识:到目前为止的所有电脑,它的文件系统都是按照树形结构来组织文件的
在这里插入图片描述
其中web服务器,维护资源时,也是同理,只是以webroot作为资源树的整体的根
在这里插入图片描述
在这棵上定位某个资源:
数据结构的视角:从根出发,写一条路径(path) ,定位唯一的树的结点
在这里插入图片描述
/blog/index.html 绝对路径
从树的根结点出发,进行路径的描述,就是绝对路径
特点:无论“我”身处何处, 一个资源的绝对路径是唯一的

相对路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

URL总结:

1.完整

其中,协议号、web服务器地址、路径不能没有的
查询字符串、片段标识符可以没有
query string: ?k1 =v1 &k2=v2&k3=v3

2.不完整

1)可以省略协议号(跟着当前资源的协议走)
2)可以省略协议号+ web服务器地址(跟着当前资源的协议+ web服务器地址走)
3.绝对路径vs相对路径
绝对路径:从根开始的路径(/ 开头)
相对路径:从当前位置开始的路径(不以/开头)

1)根的位置
2)当前位置
3)对于.和…的理解
URL中的编码问题:由于URL中能出现的字符是有限的,所以,当出现URL中不允许出现的字符时,会被URL编码
URL编码(URL Encode)和URL解码(URL Decode)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请求方法

在这里插入图片描述

区别:
!语义上的不同的!            GET:获取        POST:提交
由于语义上有区别,所以表现在很多现象上有区别:
1. GET请求不携带请求体(正文)的; POST 请求允许携带请求体,但是否携带看具体情况
2. GET请求具备幂等性; POST请求不具备幂等性
		GET想象成SELECT操作; POST 想象成INSERT操作。
		幂等性:假设没有其他第三方在动服务器资源的前提下:
					GET请求,即使发起多次,得到的结果应该是完全一致的
					POST请求,第二次请求,可能得到和第一次请求不同的结果
3. GET请求是缓存友好的,POST请求不允许缓存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

响应(Response) :服务器应答哪些信息比较合适?
1.协议版本
2.本次请求的结果(成功、失败(具体的失败细节))
3.本次响应的元信息:响应头
4.响应的资源内容(红楼梦正文) :响应体/正文
在这里插入图片描述

状态码和状态描述

在这里插入图片描述
hhhhhhhhhhhhhh
在这里插入图片描述
重要的几个:

  • 200 OK 成功
  • 404 Not Found 请求的资源不存在
  • 500 Internal Server Error 动态资源,由于我们的Java代码异常,所有tomcat报500

请求 /响应头

content-***:用来描述正文的元信息 【请求/响应】
content-type:正文的类型 (浏览器根据content-type决定如何处理资源)

常见的content-type:(具体的搜索MIME-Type)
		text/...肯定是文本, 具体是什么类型的文本,看后边的类型
		text/html:文本+ html格式
		text/css :文本+ Css格式
		text/plain :文本+纯文本信息(想象txt文件)
		
		application/...肯定是应用(大部分现在也是文本)
		application/javascript: js 应用(js 文件)
		application/json:  结构化的数据格式

	image/...
	肯定是图片
	image/jpeg	jpg格式的图片
	image/png	png

content-length:正文有多长:字节数
在这里插入图片描述

响应总结

  1. 响应的格式
    响应行(协议号+状态码+状态描述)
    响应头(K-V …直到空行)
    正文(不规定)
    2.状态码
    1)总览 1XX 2XX 3XX 4XX 5XX
    2)最常见的三种含义200、404、 500
    3.常见头信息: Content-Type
    text/html、text/ plain、text/Css ; charset=utf-8
    application/javascript、application/json

总结

HTTP知识点浮现的逻辑:
必须要有Web服务器,才能让网络上的其他浏览器也能访问自己的web资源,通信使用HTTP协议

HTTP协议:请求-响应周期:只能访问一个web资源
浏览器拿到某个资源(特指html资源后), 通过该资源的内容,会自动发起其他关联资源的请求
<link href.=.."> 
<script src=" .> </script> 
<img src=" .>
或者,用户点击页面上的某些位置,浏览器也会对新的资源发起请求
<a href.=.."> 
< form action=".." >
其中: form表单的method方法,决定了发起的get还是post请求,其他的请求都是发起get请求

URL的知识点: url 的格式、url 编码、绝对路径Vs相对路径

请求:格式+方法(GET VS POST)
响应:格式+状态+ Content-Type

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一个HTTP请求可以认为分成4个部分:

  1. 首行
  2. 请求头(header)
  3. 空行
  4. 正文(body)

如果是GET请求,没有body
如果是POST请求,一般有body

GET和POST的典型区别

这里的差别并没有本质区别,在大部分场景下,两者都可以相互代替,但是在使用习惯上,还是有很大差别。

  1. GET也可以给服务器转递一些信息,GET传递的信息一般都放在query string,POST传递消息通过body
  2. 语义上的差别:GET一般用于从服务器获取数据;POST一般用于给服务器提交数据。
  3. GET通常会被设计成幂等的,POST不要求幂等。
    幂等:每次相同的输入,得到的结果也是确定的稳定的
  4. GET可以被缓存,POST一般不能被缓存。

Host:
描述了服务器所在的地址和端口。这里用于描述最终要访问的目标。
内容大概率和URL中一样,也有可能不一样。

Content-Length:body中的数据长度
Content-Type:请求的body中的数据格式

User Agent:简称UA,描述了浏览器和操作系统的版本
Referer:当前页面的”来源“,从哪个页面跳转到该页面的

Cookie:浏览器给网页提供的本地存储数据的机制。
cookie浏览器对于访问硬盘做出了明确的限制。cookie就是通过键值对的方式组织数据的。
cookie中的数据来自服务器,服务器会通过HTTP响应的报头部分(set-cookie字段)服务器来决定浏览器的cookie要存什么
cookie可以认为是存在于浏览器中,存在于硬盘的。在存的时候,是按照浏览器+域名维度来细分的。不同的浏览器,各自存各自的cookie,同一个浏览器不同的域名,对应不同的cookie。
cookie要回到服务器去。客户端同一时刻是有很多的。客户端这边就会通过 Cookie 来保存当前用户使用中间状态当客户端访问浏览器的时候, 就会自动的把 Cookie 的内容带入到请求中,服务器就能够知道现在客户端是啥样子了

常见状态码:
200:成功
404:Not Found 访问资源不存在,在服务器上没找到
403:Forbidden 拒绝被访问(没有权限)
302:Move Temporarily 重定向(类型呼叫转移),通过location属性描述要跳转到哪个新的地址。
500:服务器内部错误 (服务器代码抛异常)
504:gateway timeout 响应超时。
在这里插入图片描述
重定向,可以重定向到外部资源的(跳转到别的网站)
请求转发只能该服务器内部的资源之间转发,少了一次交互,更高效

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值