HTTP入门

本文详细介绍了HTTP协议中请求与响应的过程,包括浏览器如何向服务器发起请求,服务器如何响应请求,以及请求和响应的具体格式。此外,还介绍了常用的HTTP命令行工具curl的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、服务器和浏览器的交互:

1)浏览器发起请求

2)服务器在80端口接收这个请求

3)服务器返回响应

4)浏览器下载这个响应

 

2、那么什么是HTTP请求?

HTTP请求就是浏览器对服务器发起的请求信息。

例如:

< GET / HTTP/1.1
< Host: www.baidu.com
< User-Agent: curl/7.54.0
< Accept: */*
<
< 发送请求的内容

 

第一行是请求方法 + 路径 + 协议/版本。

1)请求方法:GET和POST是最常见的请求方法,还有PUT PATCH DELETE HEAD OPTIONS等。

2)路径:如果没有写路径,则路径默认为/。路径和请求头里的host,可以组成完整的请求URL。

 

从第一行到回车之间的内容则为请求头,格式为key:value,常见的请求头属性:

1) Host:请求的域名,如Host: www.baidu.com

2)User-Agent:用户代理

3)Accept :告诉服务端,客户器希望接受什么类型的信息,如Accept: text/html,application/xhtml+xml,application/xml;

  

3、HTTP响应

举例:

< HTTP/1.1 200 OK
< Date: Mon, 02 Apr 2018 16:03:23 GMT
< Server: Apache
< Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
< ETag: "51-47cf7e6ee8400"
< Accept-Ranges: bytes
< Content-Length: 81
< Cache-Control: max-age=86400
< Expires: Tue, 03 Apr 2018 16:03:23 GMT
< Connection: Keep-Alive
< Content-Type: text/html
<
< 响应返回内容

 

第一行是协议/版本 + 状态码 + 状态码解释。

1)响应码举例:

- 200:请求已成功,请求所希望的响应头或数据体将随此响应返回。实际的响应将取决于所使用的请求方法。在GET请求中,响应将包含与请求的资源相对应的实体。在POST请求中,响应将包含描述或操作结果的实体。

- 301:被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。

- 302: 要求客户端执行临时重定向。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。 

- 403:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个HEAD请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。

- 404:请求失败,请求所希望得到的资源未被在服务器上发现,但允许用户的后续请求。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。

- 500:通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。没有给出具体错误信息。

- 502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

 

从第一行到回车之间的内容则为响应头,格式为key:value,常见的响应头属性:

1)Content-Type:返回内容的类型

2)Content-Length:返回内容的长度

 

4、curl是一个很强大的http命令行工具,可以用来上传和下载文件。

用法:curl [option] [url]

option:

1)-s \ --silent 安静模式,不显示进度条或者错误信息

2)-v \ --verbose 显示更多用于调试的信息,包括HTTP请求和HTTP响应。

3)-H \ --header <header> 请求头参数

4)-X \ --request <command> 指定命令

5) -d \ --data <data> HTTP POST方式传输数据

 

可以用curl了解一下HTTP请求和HTTP响应

 

5、用Chrome看HTTP请求和HTTP响应:

1)打开开发者工具

2)选中Network

3)在地址栏输入网址

4)点击请求的资源

5)看到对应的header

6)header旁边view source就可以看到具体的内容了

 

转载于:https://www.cnblogs.com/chandou/p/8699126.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值