博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web服务器和http请求
阅读量:4222 次
发布时间:2019-05-26

本文共 4790 字,大约阅读时间需要 15 分钟。

一、web服务器

  目前最主流的三个Web服务器是Apache、Nginx、 IIS。 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。

1、Web服务器具有以下特点:

  •    Web服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应。
  •    Web服务器使用HTTP(超文本传输协议)与客户机浏览器进行信息交流,这就是人们常把它们称为HTTP服务器的原因。
  •   Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。

2、客户/服务器传输过程可分为四个基一步骤:

  1.  浏览器与服务器建立连接;

  2.  浏览器向服务器请求文档;
  3.  服务器响应浏览器请求;
  4.  断开连接。

a) 浏览器向服务器请求

客户请求包含以下信息:请求方法(method )、请求头(request-URI )、请求数据(http-version);

(1)请求方法是用于特定URL或Web页面的程序HTTP请求方法:

方法 描述
get 请求指定的文档,通过请求URI获得资源
head 仅请求文档头
post 请求服务器接收指定文档作为可执行的信息,用于表单提交
put 用从客户端传送的数据取代指定文档中的内容
delete 请求服务器删除指定页面
options 允许客户端查看服务器的性能,询问可以执行哪些方法
trace 用于测试—允许客户端查看消息回收过程,远程诊断服务器
connect 用于代理进行传输例如SSL
patch 部分文档更该
propfind 查看属性
proppatch 设置属性
mkcol 创建集合
copy 拷贝
move 移动
lock 加锁
unlock 解锁

(2)请求头信息是可选项,它用于向服务器提供客户端的其他信息。

如果客户采用某种方法获取数据(如post),数据就放在头( header )之后;否则客户机等待从服务器传来的响应。

b)服务器响应浏览器请求

服务器响应包括以下关键部分:状态码、响应头、响应数据;

(1)HTTP定义了多组返回给浏览器的状态码。
(2)响应头向客户方提供服务器和/或请求文档的信息HTTP响应头:

方法 描述
Server Web服务器信息
Date 当前日期/时间
Last Modified 请求文档最近修改时间
Expires 请求文档过期时间
Content-length 数据长度(字节)
Content-type 数据M I M E类型
WWW-authenticate 用于通知客户方需要的认证信息(如用户名、口令等)

如果有客户方请求的数据,数据放在响应头之后,否则服务器断开连接。

3、常见的web服务器和其特点 :

  1. Apache:属于重量级web服务器(重量级主要是在软件包的大小上比较大,软件的耦合度大),但是速度、性能不及其他轻量级web服务器,并且消费内存较高。世界上用得最多的Web服务器,它的优势主要在于源代码开放、支持跨平台的应用(可以运行在几乎所有的Unix, Windows. Linux系统平台上),以及其可移植性等。

  2. Lighttpd:轻量级web服务器,cpu占用低,效能好,模块丰富,开源。支持FastCGI、CGI.Auth、输出压缩(output compress )、URL重写及Alias等重要功能。

  3. Tomcat:运行Servlet和Jsp web的应用软件的容器,静态和高并发处理弱。

  4. Nginx:轻量级,高性能http和反向代理服务器。高并发连接达到2-4万个,内存、cpu等系统资源消耗低。Rewrite重写规则(根据域名,URL的不同将HTTP请求分到不同的后端服务器群组),内置的健康检查功能(Nginx Proxy 后端的某台web服务器宕机也不会影响前端访问),节省带宽、支持GZIP压缩。Nginx是一个高性能的 HTTP 和 反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器,其特点是占有内存少,并发能力强。

  5. Microsoft IIS 服务器:Microsoft的Web服务器产品为Internet Information Server C IIS ) . IIS是允许在公共Intranet上发布信息的Web服务器。IIS提供了一个图形界面的管理工具,可用于监视配置和控制Internet服务。 IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI ( Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。

二、http 请求

  http 是一种让 Web 服务器与浏览器(客户端)通过 Internet 发送与接收数据的协议。Web 服务器也被称为 http服务器,它通过 http协议与客户端通信。

1、http特点:

  •   在 http中,客户端总是通过建立一个连接与发送一个http请求来发起一个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回叫连接。
  •   http不维护与客户方的连接,它使用可靠的TCP连接,通常采用TCP 80端口。

2、常用的请求方式:

  一般我们在浏览器输入一个网址访问网站都是GET请求;在使用FORM表单提交数据中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。

  HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。

  根据HTTP规范,POST可能会修改服务器上的资源的请求。比如CSDN的博客,用户提交一篇文章或者一个读者提交评论是通过POST请求来实现的,因为再提交文章或者评论提交后资源(即某个页面)不同了。

三、浏览器中GET和POST请求的区别

  在HTTP请求中,第一行必须是一个请求行,包括请求方法,请求URL,报文所用HTTP版本信息。紧接着是一个herders小节,可以有零个或一个首部,用来说明服务器要使用的附加信息。在首部之后就是一个空行,最后就是报文实体的主体部分,包含一个由任意数据组成的数据块。但是并不是所有的报文都包含实体的主体部分。

get方式传参数 post方式传参
GET /hello.html?name=tom HTTP1.1
key: value
key: value
key: value
…..
\r\n
POST /hello.html HTTP1.1
key: value
key: value
key: value
…..
\r\n
name=tom

1、两种请求方式的区别:

  • GET请求:请求的数据会附加在URL之后,

    例如,其中?后的数据就是请求的数据,参数之间以&相连;若有%,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。

  • POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的get请求中id=1213&name=lrmap就是两个实际的传输数据键值对。因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。并且post请求头多了Content-Type

    和 Content-Length。

  • 传输数据的大小:

    在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
    对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。

  • 安全性:

    POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site
    request frogery攻击,但是真正重要的数据在传的过程中还会更换协议http–>https,比如在网上支付的过程中。

  • HTTP中的GET,POST,SOAP协议都是在HTTP上运行的。

  • 当数据是中文或者不敏感的数据,则用get.因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post;

项目 get post
请求类型 向服务器索取数据 向服务器提交数据
稳定性 获取信息,而不修改信息 可能修改变服务器上的资源
传输限制 数据有大小限制,不同的浏览器对url的长度的限制是不同的 需要制定传输类型
安全性 不安全,数据会被浏览器缓存起来,用户名和密码将明文出现在url上 安全,数据放置在请求体中
服务器端获取 用Request.QueryString来获取提交来的数据 用Request.Form来获取

2、 请求头包含:

Accept:指浏览器或其他客户可以接爱的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。

User-Agent:是客户浏览器名称

Host:对应网址URL中的Web名称和端口号。

Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us,指英语。

connection:用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接

Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

Referer:表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是。这个属性可以用来跟踪Web请求是从什么网站来的。

User-Agent:是客户浏览器名称。

Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。

Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1.

Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。

转载地址:http://oymmi.baihongyu.com/

你可能感兴趣的文章
PyCharm: 显示源码行号
查看>>
cocos2dx使用第三方字库.ttf,需要注意的事项
查看>>
cocos2.X版本lua端使用定时器的方法
查看>>
lua math.fmod使用注意小数问题
查看>>
lua 时间转化
查看>>
lua学习笔记之五(Lua中的数学库)
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第一篇:互联网时代U盘化生存方式 【张振华.Jack】
查看>>
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第二篇:专注的力量 [张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第三篇:我的舍与得的2014[张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第五篇:不要给自己找任何借口【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第七篇:请留意我们身边的风景 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第八篇:坚持的力量 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第九篇:春节那些事-过年回家不需要理由【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十一篇:马云乌镇40分钟演讲实录【张振华.Jack】
查看>>
Java并发编程从入门到精通 张振华.Jack --我的书
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
《浪潮之巅》1 AT&T
查看>>