一、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之后,
    例如http://127.0.0.1:8400/map/getmeta?id=1213&name=lrmap,其中?后的数据就是请求的数据,参数之间以&相连;若有%,%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是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪Web请求是从什么网站来的。

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

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

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

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

Web服务器和http请求相关推荐

  1. asp.net 问题:Web 服务器上的请求筛选模块被配置为 拒绝包含的查询字符串过长的请求

    发现问题: post请求,在发送一个图片base64编码的字符串时,服务端报这个错误. 报错信息中给出了解决办法: 最可能的原因: Web 服务器上的请求筛选被配置为拒绝该请求,因为查询字符串过长. ...

  2. Web服务器处理连接请求的四种架构方式

    1.单线程web服务器       此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求.在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的必能 ...

  3. Web服务器程序解释请求消息并作出响应

    图6.7展示了服务器程序的工作过程,这个过程不仅限于Web服务器,对于各种服务器程序都是共通的,收发数据的过程也是大同小异的.各种服务器程序的不同点在于图中(b)客户端通信部分的第一行调用read后面 ...

  4. Web服务器对客户端请求的响应信息是,图解HTTP权威指南(三)| Web服务器对HTTP请求的处理和响应...

    一.问题 解释Web服务器是如何处理HTTP事务的 二.Web服务器 Web服务器会对HTTP请求进行处理并提供响应.Web服务器请求的七大步骤: 1)接受客户端连接 2)接收请求报文 3)处理请求 ...

  5. 套接字没有连接并且没有提供地址_网络是怎样连接的 -- web服务器接到请求后将会做什么...

    CGI指的不是CGI程序本身,而是连接程序与Web服务器程序的接口规格. 服务器概览 服务器可以分为很多种类,其硬件和操作系统与客户端是有所不同的.但是,网络相关的部分,如网卡.协议栈.Socket库 ...

  6. socket 请求Web服务器过程

    HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有"连接建立"的发生. 而有人或许会问:众所周知,HTTP协议有两大特性, ...

  7. 《jQuery与JavaScript入门经典》——第 1 章 动态Web编程简介 1.1理解Web服务器浏览器范式...

    本节书摘来自异步社区<jQuery与JavaScript入门经典>一书中的第1章,第1.1节,作者:[美]Brad Dayley著,更多章节内容可以访问云栖社区"异步社区&quo ...

  8. 应用程序服务器和Web服务器之间有什么区别?

    应用程序服务器和Web服务器之间有什么区别? #1楼 最大的不同是Web服务器处理HTTP请求,而应用程序服务器将在任意数量的协议上执行业务逻辑. #2楼 这取决于特定的体系结构. 某些应用程序服务器 ...

  9. HTTP权威指南记录 ---- Web服务器

    Web服务器 Web服务器的实现 Web服务器会对HTTP请求进行处理并提供响应.术语"Web服务器"可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备或计算机 ...

  10. 关于Web服务器的认识

    马上就要毕业了,也要开始找工作了,大学写了这么多代码了,却没有好好总结一下常用的概念很是遗憾额,就通过这篇博客记录一下我最常用的一些知识好了. 说到Web服务器,有很多文章都介绍的很好,之前看到一篇非 ...

最新文章

  1. iOS9 This application is modifying the autolayout engine from a background thread, which
  2. 用户态线程在AI中的应用
  3. iis服务器文件上传速度慢,windows 2008 R2 上传速度慢
  4. linux系统reboot怎么退出,Linux系统肿么退出?
  5. mysql query cache优化
  6. wxWidgets:wxFileSystemWatcher 示例
  7. 阿里云PolarDB论文入选数据库顶会SIGMOD2021 最新一代架构领先世界
  8. Scala入门到精通——第二十六节 Scala并发编程基础
  9. (转) POJO和javabean的异同
  10. php post请求 下载文件,POST请求 下载文件
  11. 商城项目面试问题整理
  12. php中的接口 interface 和实现 implement
  13. MTK平台系统稳定性分析
  14. css中相对长度单位_看看CSS中的长度单位
  15. 雷达威力图绘制matlab,科学网—matlab绘雷达图 - 张凌的博文
  16. 2022中元节前后几天不出门?前三天后三天不能出门是真的吗?
  17. 基于MS的氢键分析脚本介绍
  18. Python脚本下载TCGA大数据,非常简单,开放源代码
  19. java Date类型:24小时制和12小时制
  20. 赛博朋克元素HUD霓虹发光科技元素ae模板

热门文章

  1. Pyke 逻辑编程入门(2):表示事实的陈述句
  2. 数据库表的关联关系, 一对一, 一对零或一, 多对多
  3. 康托尔连续统假设正确吗?
  4. BLE(12)—— 细说 Connection
  5. TCP/IP(三):ARP报文格式详解
  6. php写出个人所得税,php趣味编程-php求个人所得税
  7. 无法远程连接到计算机 虚拟内存,远程桌面连接显示内存不足怎么破?
  8. Foxmail登陆gmail设置
  9. ms sql 创建表_使用MS查询创建表组合
  10. 关于百度云《Sugar BI》数据可视化的使用