HTTP服务器(一)

article/2025/9/18 20:12:07
问:HTTP协议的职责是什么?

答:生成针对目标web服务器的HTTP请求报文;

对Web服务器请求的内容的处理。

(听起来挺像废话的…就是客户端向服务器发出的第一步 和 服务器接收最后一步,一种固定格式请求和对应的解析处理。“请给我http://baidu.com/xss/的资源” … “原来是想要这台计算机上的/xss/资源啊”)


问:URL是什么?

答:URL地址(俗称网址),是同一资源定位符。分为带参数和不带参数的。

GET方法使用的是带参数的URL,即传递的参数会使用?连接在资源路径后边;
POST方法使用的是不带参数的URL,它的参数是通过HTTP请求报头中的请求消息体传递给服务器的。

URI 用字符串标识某一互联网资源


问:HTTP协议的格式是什么?

答:如下

GET 或 POST 请求的url路径(一般是去掉域名的路径) HTTP协议版本号
字段1名: 字段1值\r\n
字段2名: 字段2值\r\n
...
字段n名: 字段n值\r\n
\r\n
http协议包体内容

HTTP协议由两部分组成:包头和包体

包头和包体之间使用一个\r\n分割。 由于Http协议包头的每一行都是\r\n结尾,所以Http协议包头一般以\r\n\r\n结束。

HTTP协议包体不是必需的,GET方法一般没有包体。POST方法有包体。


问:GET方法和POST方法有没有使用的特地情景?

答:有。

GET:获取资源。

GET 方法用来请求访问已被 URI 识别的资源。 指定的资源经服务器端解析后返回响应内容。

也就是说, 如果请求的资源是文本, 那就保持原样返回; 如果是像 CGI( Common Gateway Interface, 通用网关接口) 那样的程序, 则返回经过执行后的输出结果。

(主要用于访问页面资源)
在这里插入图片描述

POST:传输实体主体

POST 方法用来传输实体的主体。

虽然用 GET 方法也可以传输实体的主体, 但一般不用 GET 方法进行传输, 而是用 POST 方法。

注:虽说 POST 的功能与 GET 很相似, 但POST的主要目的并不是获取响应的主体内容。
在这里插入图片描述


一、请求协议


举个栗子

比如我们在浏览器中请求http://www.hootina.org/index_2013.php这个网址,这是一个典型的GET方法,浏览器组装的http数据包格式如下:

GET /index_2013.php HTTP/1.1\r\n
Host: www.hootina .org\r\n
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n
\r\n
  • Host:域名
    Host表示请求的服务器网址;

  • Connection:keep-alive 是HTTP/1.1的特性,为了保证tcp持久连接。
    持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。
    旨在建立一次TCP连接后进行多次请求和相应的交互。

  • Upgrade-Insecure-Request:1
    告诉服务器,自己支持这种操作,也就是我能读懂你服务器发过来的上面这条信息,并且在以后发请求的时候不用http而用https

  • User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
    用于浏览器识别,可以看出你的系统版本,浏览器,浏览器内核等
    使用的代理是Mozilla/5.0

  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8\r\n
    表示浏览器支持的MIME类型。
    告诉服务器当前客户端可以支持的文档类型,这里包含了*/*表示什么都可以接收(优先级不同)
    Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的
    text/html:表示html文档
    Application:用于传输应用数据或者二进制数据
    application/xhtml+xml表示 xhtml 文档;
    application/xml表示 xml 文档。

  • Accept-Encoding: gzip, deflate
    表示浏览器支持的编码是gzip和deflate(客户端支持的编码)
    Accept-Encoding:表示浏览器有能力解码的编码类型
    gzip: GNU zip 的缩写,它是一个 GNU 自由软件的文件压缩程序,也经常用来表示 gzip 这种文件格式。
    deflate:同时使用了LZ77与哈弗曼编码的一个无损数据压缩算法

  • Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    浏览器支持的语言分别是简体中文和中文(当前客户端可以支持的语言
    Accept-Language:表示浏览器所支持的语言类型;
    zh-cn表示简体中文;
    **zh **表示中文;

另一栗子

若是POST请求,与GET请求的区别和用法上文已说明,它的特别在于有包体

POST /HttpDemo/index.jsp HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Content-Length: 28
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://127.0.0.1:8080/HttpDemo/index.jsp
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: JSESSIONID=57C3302F3350676F65B5E4409ABA87CF
  • Referer: http://127.0.0.1:8080/HttpDemo/index.jsp:
    请求来自哪个页面,例如在百度上点击链接到了这里,那么Referer:http://www.baidu.com;

如果你是在浏览器的地址栏里输入,那么就没有这个Referer请求头了
防盗链使用这个特性很好用!
Referer请求头是比较有用的一个请求头,它可以用来做统计工作,也可以用来做防盗链。
统计工作:我公司网站在百度上做了广告,但不知道在百度上做广告对我们网站的访问量是否有影响,那么可以对每个请求中的Referer进行分析,如果Referer为百度的很多,那么说明用户都是通过百度找到我们公司网站的。
防盗链:我公司网站上有一个下载链接,而其他网站盗链了这个地址,例如在我网站上的index.html页面中有一个链接,点击即可下载JDK7.0,但有某个人的微博中盗链了这个资源,它也有一个链接指向我们网站的JDK7.0,也就是说登录它的微博,点击链接就可以从我网站上下载JDK7.0,这导致我们网站的广告没有看,但下载的却是我网站的资源。这时可以使用Referer进行防盗链,在资源被下载之前,我们对Referer进行判断,如果请求来自本网站,那么允许下载,如果非本网站,先跳转到本网站看广告,然后再允许下载。
觉得这一段很通俗易懂,来自:https://blog.csdn.net/chao_xun/article/details/39611087

  • Content-Length: 28:请求体的长度,这里表示28个字节

  • userName=min&password=111217:请求题内容,hello是在表单中输入的数据。userName,password是表单字段的名字,=后面是输入的数据,多个字段中间使用&连接

响应协议


例如:

服务器向客户端返回的报文

HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n 用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据。
Content-Length:42\r\n
\r\n
问:什么是状态码? 什么时候会用到状态码?

答:HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。上例的200 OK就是。

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器(客户端)接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求

最常用的见下:

  • 200 OK
    请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。

  • 400 Bad Request
    1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
    2、请求参数有误。

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

  • 500 Internal Server Error
    服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。

  • 501 Not Implemented

服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。


http://chatgpt.dhexx.cn/article/Nl7bVgEF.shtml

相关文章

HTTP服务

URL&#xff1a;Uniform Resource Locator&#xff0c;统一资源定位符&#xff0c;对可以从互联网上得到的资源的位置和访问 方法的一种简洁的表示&#xff0c;是互联网上标准资源的地址。 网址格式&#xff1a;<协议>://<主机或主机名>[:port]/<目录资源,路径&…

【HTTP协议与Web服务器】

HTTP协议与Web服务器 浏览器与服务器通信过程HTTP的请求报头HTTP请求报头结构HTTP的请求方法 HTTP应答报头HTTP应答报头结构应答状态 web服务器的c语言实现 浏览器与服务器通信过程 浏览器与Web服务器再应用层通信使用的是HTTP协议&#xff0c;而HTTP协议在传输层使用的是TCP协…

http文件服务器

收费工具&#xff0c;二百大洋。学生党勿扰。 程序下载链接:https://download.csdn.net/download/wocanimei007/87755375 无任何后门&#xff0c;请放心使用。 毫不夸张的说&#xff0c;应该目前市场上最好用的文件互传工具。 1 概述 在unbuntu和win上进行文件互传的时候&am…

HTTP/HTTPS服务器

HTTP/HTTPS 一、消息传播过程 1、发送消息的时候做的事情。 比如说客户端发送给的消息是&#xff1a;Hello World 首先是在客户端这里&#xff0c;数据会经过一系列处理从应用层传输到数据链路层。也就对应着调用send&#xff0c;将数据拷贝到内核&#xff0c;内核再协议栈&a…

HTTPS服务器

目录 HTTPS简介 https概念 SSL/TLS 加/解密方式 对称加密 非对称加密 消息摘要 数字签名 数字证书 http与https的区别 作业需求 ​编辑 HTTPS简介 https概念 HTTPS &#xff08;全称&#xff1a;Hyper Text Transfer Protocol over SecureSocket Layer&#xff0…

HTTP服务器搭建

文章目录 实验环境说明服务器配置下载安装HTTP服务修改配置文件 客户端测试Linux客户端测试Windows客户端测试 实验环境说明 主机系统系统版本IP地址服务端LinuxRHEL 7.0192.168.43.128/24客户端LinuxRHEL 7.4192.168.43.15/24客户端Windows 11Windows 11192.168.43.1/24 基本环…

WEB/HTTP服务器搭建

HTTP 对于软件都有服务和客户&#xff0c;有服务端和客户端 服务 就是在操作系统运行一个或者多个程序&#xff0c;并为客户端提供相应所需的服务 协议 就是计算机网络中进行数据交换而建立的规则、标准或约定的集合。只有遵守这个约定&#xff0c;计算机之间才能相互通信…

ESP32基础应用之HTTP 服务器

文章目录 1 HTTP服务器简介2 ApiPost测试工具3 HTTP服务器实验3.1 ApiPost之GET测试3.2 ApiPost之POST测试3.3 ApiPost值PUT测试 参考资料&#xff1a; esp32 http服务器编程指南 1 HTTP服务器简介 HTTP服务器一般指Web服务器&#xff0c;是指驻留于因特网上某种类型计算机的…

http 服务器搭建

目录 http 服务器搭建有很多条数据时用response.write测试服务器是否开启 http 服务器搭建 通过http模块提供的方法可以创建服务器 1 引入http模块 &#xff08;nodejs内置模块&#xff0c; 可以直接引入&#xff09; const http require(http);创建服务器http.createServer…

HTTP服务器(一)HTTP服务器入门介绍

一、简介 1.1、做项目的时候&#xff0c;要请求REST服务器。而FEST服务器还是用http基本原理(即阉割版)来请求。 1.2、请求端口EndPoint/请求方法Method/请求内容格式ContentType/请求的数类型PostData(一般为JSon格式)。 1.3、我们熟悉的HTTP、FTP、Telnet等协议都是建立在…

【八】http服务器开发--实现一个http服务器

文章目录 一、整体概述二、接收http请求三、响应http请求四、完整代码即效果4.1 完整代码&#xff1a;4.2 实现过程 附&#xff08;stat函数&#xff09; 一、整体概述 本节主要实现一个http服务器的示例&#xff1b;该http服务器的主要功能是&#xff0c;在浏览器端访问服务器…

蓝桥杯c语言基础试题答案,试题 基础练习 Huffuman树 蓝桥杯 C语言

资源限制 时间限制&#xff1a;1.0s 内存限制&#xff1a;512.0MB 问题描述 Huffman树在编码中有着广泛的应用。在这里&#xff0c;我们只关心Huffman树的构造过程。 给出一列数{pi}{p0, p1, …, pn-1}&#xff0c;用这列数构造Huffman树的过程如下&#xff1a; 1. 找到{pi}中最…

蓝桥杯基础试题 字母图形 C语言实现

资源限制 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB 问题描述 利用字母可以组成一些美丽的图形&#xff0c;下面给出了一个例子&#xff1a; ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形&#xff0c;请找出这个图形的规律&#xff0c…

蓝桥杯c语言b组试题及答案,2014蓝桥杯C语言本科B组预赛试题

2014蓝桥杯C语言本科B组预赛试题 2014 蓝桥杯 C/C语言本科 B 组预赛试题12014 蓝桥杯 C/C语言本科 B 组预赛试题(完整)1.啤酒和饮料啤酒每罐 2.3 元&#xff0c;饮料每罐 1.9 元。小明买了若干啤酒和饮料&#xff0c;一共花了 82.3 元。我们还知道他买的啤酒比饮料的数量少&am…

2018年蓝桥杯C语言B组

第一题 标题&#xff1a;第几天 2000年的1月1日&#xff0c;是那一年的第1天。 那么&#xff0c;2000年的5月4日&#xff0c;是那一年的第几天&#xff1f; 注意&#xff1a;需要提交的是一个整数&#xff0c;不要填写任何多余内容 第二题 标题&#xff1a;明码 汉字的字…

(求救大佬)蓝桥杯C语言试题 算法训练 C++ CH08 01

题目&#xff1a; 求解我的代码有什么问题&#xff0c;为什么不能通过蓝桥的编译&#xff0c;但运行结果都正确。 我的代码&#xff1a; #include<stdio.h> int main() { double ssh,zrf,y,x,g,f; int a,b,c,d,t,x1,x2,x3,x4,q; int i,j; scanf("%d%d%d%d",&a…

蓝桥杯训练题C语言

开学后就很少抽空写写题了&#xff0c;所以这次只有几道题目和大家分享一下了。 有些真题也有些VIP基础题&#xff0c;想和大家分享一下。&#xff08;有些是仿的其他博主的代码&#xff0c;&#xff0c;&#xff0c;&#xff0c;因为有些确实难&#xff08;呜呜呜~&#xff0…

蓝桥杯研究生c语言试题答案,蓝桥杯试题C语言答案.doc

蓝桥杯试题C语言答案.doc 下载提示(请认真阅读)1.请仔细阅读文档&#xff0c;确保文档完整性&#xff0c;对于不预览、不比对内容而直接下载带来的问题本站不予受理。 2.下载的文档&#xff0c;不会出现我们的网址水印。 3、该文档所得收入(下载内容预览)归上传者、原创作者&am…

蓝桥杯 C语言 试题 历届试题 格子刷油漆

试题 历届试题 格子刷油漆 问题描述   X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形&#xff08;如下图所示&#xff09;&#xff0c;现需要把这些格子刷上保护漆。 你可以从任意一个格子刷起&#xff0c;刷完一格&#xff0c;可以移动到和它相邻的格子&#xff08;…

蓝桥杯 C语言 试题 历届试题 网络寻路

试题 历届试题 网络寻路 问题描述 X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包&#xff0c;为了安全起见&#xff0c;必须恰好被转发两次到达目的地。该包可能在任意一个节点产生&#xff0c;我们需要知道该网络中一共有多少种不同的转发…