返回顶部
首页 > 资讯 > 精选 >怎么解析HTTP
  • 459
分享到

怎么解析HTTP

2023-06-04 20:06:19 459人浏览 薄情痞子
摘要

今天就跟大家聊聊有关怎么解析Http,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用

今天就跟大家聊聊有关怎么解析Http,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide WEB服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于tcp/IP通信协议来传递数据(html 文件, 图片文件, 查询结果等)。

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

怎么解析HTTP

怎么解析HTTP

GET /*;q=<html> <head></head> <body> <!--body Goes here--> </body> </html>第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)

第二部分:消息报头,用来说明客户端要使用的一些附加信息

第二行和第三行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8

第三部分:空行,消息报头后面的空行是必须的第四部分:响应正文,服务器返回给客户端的文本信息。

空行后面的html部分为响应正文。

HTTP之状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息--表示请求已接收,继续处理2xx:成功--表示请求已被成功接收、理解、接受3xx:重定向--要完成请求必须进行更进一步的操作4xx:客户端错误--请求有语法错误或请求无法实现5xx:服务器端错误--服务器未能实现合法的请求

常见状态码:

//客户端请求成功 DELETE      请求服务器删除指定的页面。 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS     允许客户端查看服务器的性能。 TRACE     回显服务器收到的请求,主要用于测试或诊断。

HTTP工作原理

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

以下是 HTTP 请求/响应的步骤:

客户端连接到Web服务器

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。

发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

释放连接TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

客户端浏览器解析HTML内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;

浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

释放 TCP连接;

浏览器将该 html 文本并显示内容;   

GET和POST请求的区别

GET请求

GET /books/?sex=man&name=Professional HTTP/1.1Host: www.wrox.comUser-Agent: Mozilla/5.0 (windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Connection: Keep-Alive

注意最后一行是空行

POST请求

POST / HTTP/1.1Host: www.wrox.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Content-Type: application/x-www-fORM-urlencodedContent-Length: 40Connection: Keep-Alivename=Professional%20ajax&publisher=Wiley

GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接;例 如:login.action?name=hyDDD&passWord=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

POST提交:把提交的数据放置在是HTTP包的包体中。上文示例中红色字体标明的就是实际的传输数据

因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变

传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。

而在实际开发中存在的限制主要有:

GET:特定浏览器和服务器对URL长度有限制,例如 IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系 统的支持。

因此对于GET提交时,传输数据就会受到URL长度的 限制。

POST:由于不是通过URL传值,理论上数据不受 限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。

安全

POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击

Http get,post,soap协议都是在http上运行的

(1)get:请求参数是作为一个key/value对的序列(查询字符串)附加到URL上的
查询字符串的长度受到web浏览器和web服务器的限制(如IE最多支持2048个字符),不适合传输大型数据集同时,它很不安全

(2)post:请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分用来传输表单信息,因此必须将Content-type设置为:application/x-www-form- urlencoded。post设计用来支持web窗体上的用户字段,其参数也是作为key/value对传输。
但是:它不支持复杂数据类型,因为post没有定义传输数据结构的语义和规则。

(3)soap:是http post的一个专用版本,遵循一种特殊的xml消息格式
Content-type设置为: text/xml 任何数据都可以xml化。

Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

我们看看GET和POST的区别

    1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.

    2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

    3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

    4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

看完上述内容,你们对怎么解析HTTP有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 怎么解析HTTP

本文链接: https://lsjlt.com/news/239333.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么解析HTTP
    今天就跟大家聊聊有关怎么解析HTTP,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用...
    99+
    2023-06-04
  • Python socket怎么解析HTTP请求内容
    本篇内容主要讲解“Python socket怎么解析HTTP请求内容”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python socket怎么解析HTTP请求内容”吧!so...
    99+
    2023-06-29
  • python解析http request
    如果通过抓包工具抓到一个raw http request,想要解析它,可以使用如下方法。 编写一个继承自python内置基类BaseHTTPRequestHandler的类,代码如下: from BaseHTTPServer import...
    99+
    2023-01-31
    python http request
  • web容器是怎么解析http报文的
    本篇内容主要讲解“web容器是怎么解析http报文的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web容器是怎么解析http报文的”吧! 摘要http报文其...
    99+
    2024-04-02
  • 怎么解析C#网络编程中的HTTP协议
    这篇文章将为大家详细讲解有关怎么解析C#网络编程中的HTTP协议,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是...
    99+
    2023-06-17
  • 深入解析nodejs HTTP服务
    我最近在研究nodejs的路上,正好这两天了解了nodejs HTTP服务,那么今天也算个学习笔记吧! nodejs最重要的方面之一是具有非常迅速的实现HTTP和HTTPS服务器和服务的能力。http服务...
    99+
    2022-06-04
    nodejs HTTP
  • http访问解析流程的示例分析
    这篇文章给大家分享的是有关http访问解析流程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。http访问网址域名解析流程:1、在浏览器中输入www.qq.com域名,操...
    99+
    2024-04-02
  • 解析HTTP请求报文(GET、POST)
    目的: 一个WEB服务器需要解析客户端(浏览器)发来的请求,两种常见的请求方式是GET和POST。 GET的请求格式: GET请求没有请求体只有请求头GET请求的请求参数放在URL后加上一个""的后面,参数以key=value的形式传递,参...
    99+
    2023-09-02
    http 网络协议 c++ mysql
  • Golang HTTP编程的源码解析详解
    目录1、网络基础2、Golang HTTP编程2.1 代码示例2.2 源码分析3. 总结1、网络基础 基本TCP客户-服务器程序Socket编程流程如如下图所示。 TCP服务器绑定到...
    99+
    2023-02-21
    Golang HTTP编程 Go HTTP编程 Golang HTTP
  • c语言中怎么利用http请求解析表单内容
    本篇文章给大家分享的是有关c语言中怎么利用http请求解析表单内容,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码如下: #ifn...
    99+
    2024-04-02
  • HTTP状态码差异性的解析
    在网络通信中,HTTP协议是应用层协议中最常用的之一。在HTTP通信的过程中,服务器会在响应报文中返回一个状态码,这个状态码用于告知请求的处理情况。HTTP状态码共分为五类,分别是1x...
    99+
    2024-02-22
  • HTTP状态码460的含义解析
    大白话解释:HTTP状态码460到底是什么意思? 大家好,今天我们来聊一聊HTTP状态码中的一个比较奇怪的数字 - 460。相信不少朋友在开发网站或者浏览网页的时候都曾遇到过各种各样的...
    99+
    2024-02-24
    http状态码 意思
  • 怎么进行Go语言HTTP Server源码分析
    这期内容当中小编将会给大家带来有关怎么进行Go语言HTTP Server源码分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Go语言中HTTP Server:HTTP  server,顾名思义...
    99+
    2023-06-17
  • 浅析怎么使用PHP查询HTTP状态码
    PHP是一种流行的编程语言,它被广泛用于构建动态网站和Web应用程序。在Web开发过程中,我们经常需要查询HTTP状态码,以了解Web服务器返回的响应状态。本文将介绍如何使用PHP查询HTTP状态码。第一步:使用PHP构建HTTP请求要查询...
    99+
    2023-05-14
  • Python socket如何解析HTTP请求内容
    目录socket解析HTTP请求内容思路1. 解析HTTP请求的头部2. 请求头里面含有Content-Length参数3. 请求头里面含有Transfer-Encoding: ch...
    99+
    2024-04-02
  • 怎么理解HTTP的安全问题
    这篇文章主要介绍“怎么理解HTTP的安全问题”,在日常操作中,相信很多人在怎么理解HTTP的安全问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解HTTP的安全问题”...
    99+
    2024-04-02
  • web面试常问http缓存解析相关
    目录为什么要有http缓存?http缓存之 强制缓存http缓存之 协商缓存(对比缓存)协商缓存中的资源标识为什么要有http缓存? 1.当输入网址到加载出页面, 电...
    99+
    2024-04-02
  • 解析C#网络编程中的Http请求
    本篇分享简单介绍C#中的Http请求,前几天帮朋友的项目封装ApiHelper,我粗糙的结果就如下,想想我真的是差的太远了。还有一位架构师也在封装这个Helper , 所以最后的结果...
    99+
    2024-04-02
  • 解析HTTP状态码的意义和作用
    HTTP(Hypertext Transfer Protocol)是一种用于在网络中传输超文本的应用层协议。在HTTP协议中,服务器和客户端之间通过交换消息来完成数据通信。在客户端向服务器发送请求并得到响应时,服务器会通过HTTP状态码来表...
    99+
    2023-12-26
    HTTP状态码 理解 用途
  • windows中http status 500错误怎么解决
    这篇文章主要介绍“windows中http status 500错误怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows中http status 500错误怎么解决”文章能帮助大家解...
    99+
    2023-07-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作