• Web基础与HTTP协议


    1.HTML概述

       HTML叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。 HTML命令可以说明文字,图形、动画、声音、表格、链接等。

    HTML文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记语言文件,只用修改文件名后缀为“.html”或“.htm”即可。

    2.HTML 基本标签

         HTML标签采用双标记符的形式,前后标记符对应,分别表示标记开始和结束,标记符中间的内容被标签描述。前标记符由“< XXX>”表示,结尾标记符多了一个“/”,由“< /XXX>”表示。

    3.HTML 文件结构

    HTML文件最外层由< html> < /html>表示,说明该文件是用HTML语言描述的。在它里面是并列的头标签(< head>)和内容标签(< body>)。

    1. <html>
    2. <head>网页的内容描述信息</head>
    3. <body>网页显示的内容</body>
    4. </html>

    头标签中常用标签:

     

    标签描述
    </td><td>定义文档的主题</td></tr><tr><td><base></td><td>定义页面标签默认地址</td></tr><tr><td><link></td><td>定义文档和外部资源之间关系</td></tr><tr><td><meta></td><td>定义html文档中元数据</td></tr><tr><td><script></td><td>定义客户端的脚本文件</td></tr><tr><td><style></td><td>定义html文档的样式文件</td></tr></tbody></table></div> <p><strong>内容标签中常用标签:</strong></p> <div class="table-box"><table><tbody><tr><td>< table></td><td>定义一个表格</td></tr><tr><td>< tr></td><td>定义了表格中的一行</td></tr><tr><td>< td></td><td>定义了表格中某一行的一列</td></tr><tr><td>< img></td><td>定义了一个图像</td></tr><tr><td>< a></td><td>定义了一个超链接</td></tr><tr><td>< p></td><td>定义了一行</td></tr><tr><td>< br></td><td>定义了换行</td></tr><tr><td>< font></td><td> <p>定义了字体</p> </td></tr></tbody></table></div> <h3><a name="t3"></a>4. 静态网页动态网页:</h3> <h4><a name="t4"></a>   4.1 静态网页:</h4> <blockquote> <p>在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,静态网页是标准的HTML文件,它的文件扩展名是.htm、.html。静态网页是网站建设的基础,早期的网站一般都是由静态网页制作的。</p> <p>静态网页也可以出现各种动态的效果,如.GIF格式的动画、FLASH、滚动字幕等。这些“动态效果”只是视觉上的,与下面将要介绍的动态网页是不同的概念。</p> <p>静态网页只要不修改代码,是不会改变的,每天展示的内容是一样的。静态网页只使用html语言,不使用其他高级程序语言。</p> </blockquote> <h4><a name="t5"></a>    4.2 动态网页:</h4> <blockquote> <p>所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非是修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。</p> <p>动态网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见网页制作格式,而是以.<a href="https://so.csdn.net/so/search?q=aspx&spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-view="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=aspx&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"aspx\"}"}" data-report-click="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=aspx&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"aspx\"}"}" data-tit="aspx" data-pretit="aspx">aspx</a>、.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。</p> <p>动态网页是基本的html语法规范与Java、PHP、C#等高级程序设计语言、数据库编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。因此,从这个意义上来讲,凡是结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。</p> </blockquote> <h3><a name="t6"></a><span style="color:#0d0016;">  5. HTTP协议</span></h3> <blockquote> <p>HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。</p> </blockquote> <p> HTTP方法:</p> <blockquote> <p>HTTP 方法描述GET对服务器资源获取的简单请求PUT向服务器提交数据,以修改数据POST用于发送包含用户提交数据的请求DELETE删除服务器上的某些资源HEAD请求页面的首部,获取资源的元信息CONNECT用于ssl隧道的基于代理的请求OPTIONS返回所有可用的方法,常用于跨域TRACE追踪 请求--响应的传输路径。</p> </blockquote> <p><img alt="" height="577" src="https://1000bd.com/contentImg/2024/09/14/04ddb06feba944da.png" ></p> <p> </p> <div class="table-box"><table><thead><tr><th>HTTP 方法</th><th>描述</th></tr></thead><tbody><tr><td>GET</td><td>对服务器资源获取的简单请求</td></tr><tr><td>PUT</td><td>向服务器提交数据,以修改数据</td></tr><tr><td>POST</td><td>用于发送包含用户提交数据的请求</td></tr><tr><td>DELETE</td><td>删除服务器上的某些资源</td></tr><tr><td>HEAD</td><td>请求页面的首部,获取资源的元信息</td></tr><tr><td>CONNECT</td><td>用于ssl隧道的基于代理的请求</td></tr><tr><td>OPTIONS</td><td>返回所有可用的方法,常用于跨域</td></tr><tr><td>TRACE</td><td>追踪 请求--响应的传输路径</td></tr></tbody></table></div> <h4><a name="t7"></a>GET 和 POST 比较:</h4> <p><strong>GET 方法</strong></p> <ul><li>从指定的服务器上获得数据</li><li>GET请求能被缓存</li><li>GET请求会保存在浏览器的浏览纪录里</li><li>GET请求有长度的限制</li><li>主要用于获取数据</li><li>查询的字符串会显示在URL后缀中,不安全</li></ul> <p><strong>POST 方法</strong></p> <ul><li>提交数据给指定服务器处理</li><li>POST请求不能被缓存</li><li>POST请求不会保存在浏览器的浏览纪录里</li><li>POST请求没有长度限制</li><li>查询的字符串不会显示在URL中,比较安全</li></ul> <h2><a name="t8"></a><img alt="" height="110" src="https://1000bd.com/contentImg/2024/09/14/d7984c2cb7931f79.png" ></h2> <h2><a name="t9"></a>6.HTTP 状态码</h2> <p> </p> <blockquote> <p>HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一 URL 时, 服务器根据处理情况返回相应的处理状态。</p> <p>通常正常的状态码为2xx,3xx(如200),如果出现异常会返回4xx,5xx(如404)。</p> </blockquote> <p><strong>状态码分类:</strong></p> <div class="table-box"><table><thead><tr><th>状态码首位</th><th>已定义范围</th><th>分类</th></tr></thead><tbody><tr><td>1xx</td><td>100-101</td><td>信息提示</td></tr><tr><td>2xx</td><td>200-206</td><td>成功</td></tr><tr><td>3xx</td><td>300-305</td><td>重定向</td></tr><tr><td>4xx</td><td>400-415</td><td>客户端错误</td></tr><tr><td>5xx</td><td>500-505</td><td>服务器错误</td></tr></tbody></table></div> <p> <strong>HTTP 常见状态码:</strong></p> <div class="table-box"><table><thead><tr><th>状态码</th><th>功能描述</th></tr></thead><tbody><tr><td>200</td><td>一切正常</td></tr><tr><td>301</td><td>永久重定向</td></tr><tr><td>302</td><td>临时重定向</td></tr><tr><td>401</td><td>用户名或密码错误</td></tr><tr><td>403</td><td>禁止访问(客户端IP地址被拒绝)</td></tr><tr><td>404</td><td>请求的文件不存在</td></tr><tr><td>414</td><td>请求URL头部过长</td></tr><tr><td>500</td><td>服务器内部错误。比如脚本错误,编程语言语法错误</td></tr><tr><td>502</td><td>无效网关</td></tr><tr><td>503</td><td>当前服务不可用。web服务器不能处理HTTP请求,可能是临时超载或者是服务器进行停机维护。</td></tr><tr><td>504</td><td>网关请求超时。程序执行时间过长导致响应超时,例如程序需要执行20秒,而nginx最大响应等待时间为10秒,这样就会出现超时。</td></tr></tbody></table></div> <p><strong>产生502(无效网关)的原因:</strong></p> <p>1、数据包没有送到网卡,网络问题;</p> <p>2、数据包送进去了(交换机能抓到包),但是网卡没收到,网卡问题或防火墙问题;</p> <p>3、网卡接收到了,处理不了,服务问题。(比如服务器当前连接太多,响应太慢;页面素材太多,带宽不够。)</p> <h2><a name="t10"></a>7、HTTP 请求流程分析</h2> <p><strong>请求报文四部分:</strong></p> <p></p> <ul><li>请求行:请求行由请求方法、URL 以及协议版本三部分组成。</li><li>请求头:请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。</li><li>空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。</li><li>请求体:请求体是请求提交的参数,GET 方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。</li></ul> <p><strong>常用的请求头:</strong></p> <div class="table-box"><table><thead><tr><th>请求头</th><th>描述</th></tr></thead><tbody><tr><td>Host</td><td>接受请求的服务器地址,可以是 IP:端口号 ,也可以是域名</td></tr><tr><td>User-Agent</td><td>发送请求的应用程序名称</td></tr><tr><td>Connection</td><td>指定与连接相关的属性,如Connection:Keep-Alive</td></tr><tr><td>Accept-Charset</td><td>通知服务端可以发送的编码格式</td></tr><tr><td>Accept-Encoding</td><td>通知服务端可以发送的数据压缩格式</td></tr><tr><td>Accept-Language</td><td>通知服务端可以发送的语言</td></tr></tbody></table></div> <p>响应报文四部分:</p> <ul><li>状态行:状态行由协议版本,状态码,状态码描述三部分组成。</li><li>响应头:响应头与请求头部类似,为响应报文添加了一些附加信息。</li><li>空行:响应头部的最后会有一个空行,表示响应头部结束。</li><li>响应体:服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。</li></ul> <div class="table-box"><table><thead><tr><th>响应头</th><th>描述</th></tr></thead><tbody><tr><td>Server</td><td>服务器应用程序软件的名称和版本</td></tr><tr><td>Content-Type</td><td>响应正文的类型(是图片还是二进制字符串)</td></tr><tr><td>Content-Length</td><td>响应正文长度</td></tr><tr><td>Content-Charset</td><td>响应正文使用的编码</td></tr><tr><td>Content-Encoding</td><td>响应正文使用的数据压缩格式</td></tr><tr><td>Content-Language</td><td>响应正文使用的语言</td></tr></tbody></table></div> <h3><a name="t11"></a>8.HTTP访问的过程</h3> <p>1、客户端通过域名进行访问,先进行DNS域名解析。</p> <p>2、之后客户端请求与web服务器建立TCP连接(三次握手)。</p> <p>3、建立连接后,客户端向web服务器发送一个HTTP请求。</p> <p>4、服务器响应HTTP请求,客户端的浏览器得到HTML代码。</p> <p>5、浏览器解析HTML代码,并请求HTML代码中的资源。(浏览器拿到HTML文件后,开始解析HTML代码,遇到静态资源时,就向服务器去请求下载。)</p> <p>6、断开TCP连接(四次挥手),浏览器对页面进行渲染呈现给用户。</p> <p><img alt="" height="413" src="https://1000bd.com/contentImg/2024/09/14/c57144035a10032e.png" ></p> <p> </p> </div> </div> </li> <li class="list-group-item ul-li"> <b>相关阅读:</b><br> <nobr> <a href="/Article/Index/1510940">记录一次bug</a> <br /> <a href="/Article/Index/1474186">一次性能测试,为啥把我逼疯了?</a> <br /> <a href="/Article/Index/1431465">Verilog刷题[hdlbits] :Always if2</a> <br /> <a href="/Article/Index/1204758">争议不断的AI绘画,靠什么成为了顶流?</a> <br /> <a href="/Article/Index/1321437">4个独立通道或8非隔离ARINC825接口卡</a> <br /> <a href="/Article/Index/1470186">Python-Numpy中的repmat</a> <br /> <a href="/Article/Index/729365">三角形个数</a> <br /> <a href="/Article/Index/1105697">I.MX6UL的uboot移植</a> <br /> <a href="/Article/Index/631801">气象绘图软件Panoply使用教程 (不定时更新)</a> <br /> <a href="/Article/Index/807381">采坑websocket总结(二)</a> <br /> </nobr> </li> <li class="list-group-item from-a mb-2"> 原文地址:https://blog.csdn.net/weixin_59629968/article/details/126945350 </li> </ul> </div> <div class="col-lg-4 col-sm-12"> <ul class="list-group" style="word-break:break-all;"> <li class="list-group-item ul-li-bg" aria-current="true"> 最新文章 </li> <li class="list-group-item ul-li"> <nobr> <a href="/Article/Index/1484446">攻防演习之三天拿下官网站群</a> <br /> <a href="/Article/Index/1515268">数据安全治理学习——前期安全规划和安全管理体系建设</a> <br /> <a href="/Article/Index/1759065">企业安全 | 企业内一次钓鱼演练准备过程</a> <br /> <a href="/Article/Index/1485036">内网渗透测试 | Kerberos协议及其部分攻击手法</a> <br /> <a href="/Article/Index/1877332">0day的产生 | 不懂代码的"代码审计"</a> <br /> <a href="/Article/Index/1887576">安装scrcpy-client模块av模块异常,环境问题解决方案</a> <br /> <a href="/Article/Index/1887578">leetcode hot100【LeetCode 279. 完全平方数】java实现</a> <br /> <a href="/Article/Index/1887512">OpenWrt下安装Mosquitto</a> <br /> <a href="/Article/Index/1887520">AnatoMask论文汇总</a> <br /> <a href="/Article/Index/1887496">【AI日记】24.11.01 LangChain、openai api和github copilot</a> <br /> </nobr> </li> </ul> <ul class="list-group pt-2" style="word-break:break-all;"> <li class="list-group-item ul-li-bg" aria-current="true"> 热门文章 </li> <li class="list-group-item ul-li"> <nobr> <a href="/Article/Index/888177">十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!</a> <br /> <a href="/Article/Index/797680">奉劝各位学弟学妹们,该打造你的技术影响力了!</a> <br /> <a href="/Article/Index/888183">五年了,我在 CSDN 的两个一百万。</a> <br /> <a href="/Article/Index/888179">Java俄罗斯方块,老程序员花了一个周末,连接中学年代!</a> <br /> <a href="/Article/Index/797730">面试官都震惊,你这网络基础可以啊!</a> <br /> <a href="/Article/Index/797725">你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法</a> <br /> <a href="/Article/Index/797702">心情不好的时候,用 Python 画棵樱花树送给自己吧</a> <br /> <a href="/Article/Index/797709">通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!</a> <br /> <a href="/Article/Index/797716">13 万字 C 语言从入门到精通保姆级教程2021 年版</a> <br /> <a href="/Article/Index/888192">10行代码集2000张美女图,Python爬虫120例,再上征途</a> <br /> </nobr> </li> </ul> </div> </div> </div> <!-- 主体 --> <!--body结束--> <!--这里是footer模板--> <!--footer--> <nav class="navbar navbar-inverse navbar-fixed-bottom"> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="text-muted center foot-height"> Copyright © 2022 侵权请联系<a href="mailto:2656653265@qq.com">2656653265@qq.com</a>    <a href="https://beian.miit.gov.cn/" target="_blank">京ICP备2022015340号-1</a> </div> <div style="width:300px;margin:0 auto; padding:0px 5px;"> <a href="/regex.html">正则表达式工具</a> <a href="/cron.html">cron表达式工具</a> <a href="/pwdcreator.html">密码生成工具</a> </div> <div style="width:300px;margin:0 auto; padding:5px 0;"> <a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010502049817" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"> <img src="" style="float:left;" /><p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;">京公网安备 11010502049817号</p></a> </div> </div> </div> </div> </nav> <!--footer--> <!--footer模板结束--> <script src="/js/plugins/jquery/jquery.js"></script> <script src="/js/bootstrap.min.js"></script> <!--这里是scripts模板--> <!--scripts模板结束--> </body> </html>