请求报文和响应报文基本格式
直接在图上清晰的标注:
所以,我们可以总结一下:
对于请求报文,首行中的内容基本上是针对请求方式和请求的文件地址,以及请求的协议版本。这些内容都是用来描述请求的最基本内容,必须显示的表现出来,缺一不可。
对于请求报文中的请求头而言,里面的内容主要是用来接受这个请求主体的信息,比如content-type,以及请求接受的响应信息,如:Accept等。
而对于响应报文而言,首行描述的内容依旧是最基本且缺一不可的。主要是请求的协议版本和响应的状态。在消息头中,主要描述了响应主体的一些信息,比如响应主体的文件格式,长度等……。
TIP:
为什么在请求报文的起始行中,只有文件的存放路径却没有网站的域名?
不要忘记http请求时建立在tcp connected的基础上,三次挥手后,服务端已经为我们开放端口建立连接,我们就不需要在这里告诉服务器请求的域名是什么了,难道服务器自己还不知道他自己是谁么?我们只需要告诉服务器,我需要你哪里的某个文件即可。
HTTP方法
HTTP方法不仅仅只有我们常用的GET和POST还有DELETE、PUT、HEAD等。
虽然拥有这么多HTTP请求方法,但是我们不必一定遵守,我们完全可以用GET去更新或者删除某些数据,只不过这样并不符合HTTP的‘语义化’规范。
如果我们随便使用http方法进行操作,结果可能就会造成一个并不知情的人通过了他所认为安全的方式做出了十分危险的举动。
比如我们用GET请求去做一些数据库删除操作,而那么不知情的人可能认为GET是一个获取数据的安全操作,结果就很可能造成了“误删”。
常见的http code
1xx: 信息,服务端收到请求,需要请求者继续执行操作。
-
100: 客户端应当继续发送请求,这个临时响应是用来通知客户端服务端已经接受了一部分请求,且仍未被拒绝。客户端应该继续发送请求的剩余部分,或者请求已经完成。
-
101: 服务端根据客户端的请求切换协议。只能切换到更高版本的协议。
2xx:成功,操作成功接受并得到了一定的处理
-
200: 请求成功
-
201:created 服务端创建了新的资源
-
202:服务端已经接受但是还未处理完成。
3xx: 重定向,需要进一步的操作以完成请求
-
301: 服务端资源已经永久移动到其他地方,返回新的URI,浏览器会自动定位到新的URI。下次请求应该使用新的URI。
-
302:服务端资源临时被移动到了其他地方,返回新的URI,浏览器也会自动定位到新的URI。但是下次请求不必使用新的URI,使用老的URI进行下次请求即可。
-
304:请求到的资源没有发生变化,通知浏览器访问本地缓存即可。
4xx: 客户端错误,请求包含语法错误或者无法完成请求
-
400:Bad Request表示服务器无法理解请求的格式,客户端不应该再次使用相同的内容发起请求。
-
401: 没有经过用户认证,无权限。
-
402:该资源被保留,将来使用。
-
403:经典的Forbidden,请求遭到服务器拒绝。
-
404:服务器上没有对应的资源。
5xx:服务端错误,服务器在处理请求的过程中发生了错误
-
500:服务器内部错误
-
501:服务端暂时不支持请求的功能
-
502:经典的Bad Gateway代理服务器作出的响应,表示代理服务器尝试执行请求时,从上游服务器收到了无效的响应。
TIP:
http状态码大全:两个对比一起看效果更佳