No1_Web的工作机制

简介:

1、C/S结构与B/S结构的区别

a、硬件环境方面。C/S结构是建立在局域网基础上的,而B/S结构是建立在广域网的基础之上的。

b、软件重用性方面。C/S程序的软件重用性没有B/S程序中软件的重用性好。

c、系统维护方面。C/S结构的系统升级困难,必须整体考量,要实现升级可能需要重新实现一个系统。B/S结构中可以仅更换个别构建,实现系统的无缝升级,降低系统维护的开销,升级简单。

d、用户接口方面。B/S结构使用浏览器作为展示界面,因此有更加丰富的表现方式,而C/S结构表现方法有限。

e、处理问题方面。C/S结构与操作系统有关,B/S结构可以面向不同的用户群,地域上可以是分散的,与操作系统平台的关系较小。

 

2、解析HTTP协议请求

(1)、请求行

请求行只包括三个内容:方法、请求资源的URIHTTP版本,其格式可以表示为:

Method  Request-URI  HTTP-Version  CRLF

其中,CRLF表示回车和换行。

方法有GETPOST

(2)、请求报头

常见的请求报头有AcceptUser-AgentAccept用于指定客户端所接受的信息类型。

例如:Accepttext/html

  Acceptimage/gif

表明客户端可接收图像和HTML文件或文本文件

User-Agent用于将发送请求的客户端信息,如客户端的操作系统名称和版本信息、浏览器的名称和版本信息等告知服务器。

其他常用的请求报头说明如下:

Accept:用于指定客户端所支持的信息类型。

Accept-Charset:指定客户端可以接受的字符集,如ISO-8859-1GB2312等。如果未设置这个域,则表示可以接收任何字符集。

Accept-Encoding:指定客户端可接受的编码。

Accept-Language:指定客户端可接受的自然语言,如果该域未设置,则表示客户端可接受各种语言。

Host:指定被请求资源所在的主机和端口号,缺省端口号为80

Connection:指定请求结束后是保持连接还是关闭连接。

HTTP请求举例:

GET /index.html HTTP/1.1

Accept: text/plain      /*ASCII码文本文件*/

Accept: text/html      /*HTML文本文件*/

User-Agent: Mozilla/4.5(WinNT)    /*指定用户代理*/

                    /*空行*/

需要注意的是,使用GET方法的HTTP请求中不能包含实体内容,而使用POSTPUTDELETE方法的HTTP请求中可以包含实体内容。

(3)、GET方法和POST方法

Get方法中对总的字符数是有限制的,这取决去具体的服务器。如果用户在地址栏中键入的文本太长,可能会导致GET方法无法正常工作。

GET方法发送的数据会追加到URL的后面,而且在浏览器的地址栏中会显示出这些数据,因此一些比较隐私的或敏感的数据不建议使用GET方法来发送。

GET方法中,参数会追加到请求URL后面,且以”?”开头。各个参数之间使用”&”进行分隔。

使用POST方法发送数据的示例如下:

POST /index.html HTTP1.1                  /*请求行*/

HOST:www.javait.com                      /*存放所请求对象的主机*/

User-Agent:Mozilla/4.5(WinNT)              /*指定用户代理*/

Accept:text/html                           /*HTML文本文件*/

Accept-language:zh-cn                      /*指定可接受的语言*/

Content-Length:22

Connection:keep-alive

param1=abc¶m2=def                    /*提交的参数*/

 

3、解析HTTP协议响应

(1)、状态行

状态行由HTTP版本(HTTP-Version)、状态码(Status-Code)以及解释状态码的简单短语(Reason-phrase)三部分构成,其格式如下:

HTTP-Version  Status-Code  Reason-phrase  CRLF

状态码由三位数字组成,共有5大类33种,其中第一个数字指定了响应类别,取值为1-5,后面两位没有具体的规定。

1xx:指示信息,如请求收到了或正在处理。

2xx:成功。

3xx:重定向。

4xx:客户端错误,如请求中含有错误的语法或不能正常完成。

5xx:服务器端错误,如服务器失效而无法完成请求。

例如:

200  OK 成功

304  Not Modified 未修改

400  Bad Request 错误请求

404  Not Found 未找到

典型的响应状态吗解释如下:

200:表示请求成功,成功返回了请求的资源。

302/307:表示临时重定向,此时被请求的文档已经临时移动到其他位置,该文档新的URL将在Location响应报头中给出。

401:表示浏览器访问的是一个受到密码保护的页面。

403:表示服务器收到请求,但拒绝提供服务。

404:表示找不到资源,即服务器上不存在浏览器请求的资源。

500:表示内部服务器错误,即服务器端的CGIASPJSP等程序发生了错误。

503:表示服务器暂时性超载,不能处理当前的请求。

状态行举例:

HTTP 1.0 200 OK

(2)、响应报头

常见的响应报头如下:

Allow:指出服务器所支持的请求方法,如GETPOST等方法。

Content-Encoding:指定文档的编码方法。

Content-Length:指定响应中数据的字节长度。

Content-Type:指定回送数据的MIME类型。

Date:指定发送HTTP消息的日期。

Last-Modified:指定返回数据的最后修改时间。

Location:重定向请求者到一个新的URI地址。

Refresh:指定浏览器定时刷新的时间。

Expired:指定浏览器缓存数据的时间。

Server:指定服务器的名称,包含了处理请求的服务器使用的软件产品信息,与User-Agent请求报头相对应。

(3)、响应正文

响应正文是指服务器所返回的资源内容,如HTML页面。响应报头和响应正文之间必须用空行来分隔。

一个典型的HTTP响应示例如下:

HTTP/1.1 200 OK                     /*状态行*/

Connection: close                      /*连接状态*/

DateWed,  19 Nov 2011 02:20:45 GMT  /*日期*/

ServerApache/2.0.54(Unix)             /*服务器*/ 

Content-Length397                    /*指定数据包含的字节长度*/

Content-Typetext/html                  /*指定返回数据的MIME类型*/

/*空行*/

<html>

<body>

/*数据*/

</body>

</html>

目录
相关文章
|
30天前
|
安全 测试技术 数据库
维护的Web应用程序
【10月更文挑战第4天】维护的Web应用程序
44 4
|
30天前
|
设计模式 JavaScript 前端开发
浅谈JavaScript 框架在现代 Web 开发中的作用
浅谈JavaScript 框架在现代 Web 开发中的作用
35 12
|
5月前
|
SQL 安全 数据库
如何构建一个安全的Web应用:技术与策略的全面指南
【6月更文挑战第12天】构建安全Web应用的全面指南:了解SQL注入、XSS等威胁,采用输入验证、安全编程语言,配置安全服务器和数据库,使用HTTPS,实施会话管理、访问控制,正确处理错误和日志,定期进行安全审计和漏洞扫描。确保用户数据和应用安全。
|
30天前
|
设计模式 测试技术 持续交付
开发复杂Web应用程序
【10月更文挑战第3天】开发复杂Web应用程序
33 2
|
1月前
|
Rust 网络协议 应用服务中间件
granian:让你的 Web 应用程序快如闪电
granian:让你的 Web 应用程序快如闪电
58 2
|
6月前
|
存储 前端开发 JavaScript
从前端到后端:构建完整的Web应用程序
本文将介绍如何从前端到后端构建一个完整的Web应用程序。我们将探讨前端开发、后端开发以及使用Java、Python、C等技术实现的数据库集成。通过本文,您将了解到如何设计和开发一个完善的Web应用程序,并具备基本的技术知识。
|
6月前
|
Web App开发 前端开发 JavaScript
2023 年 Web 框架性能报告
2023 年 Web 框架性能报告
|
6月前
|
JSON 监控 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> 提升插件健壮性
《Webpack5 核心原理与应用实践》学习笔记-> 提升插件健壮性
89 0
|
消息中间件 缓存 负载均衡
Web 服务器与应用程序服务器:有什么区别?
Web 服务器与应用程序服务器:有什么区别?
226 0
Web 服务器与应用程序服务器:有什么区别?
|
小程序 Java 应用服务中间件
动态 WEB 开发核心-Servlet详细分析
动态 WEB 开发核心-Servlet详细分析
52 0