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>

目录
相关文章
|
存储 自然语言处理 物联网
StableDiffusion-02 LoRA上手使用实测 尝试生成图片 使用多个LoRA 调整LoRA效果 10分钟上手 多图
StableDiffusion-02 LoRA上手使用实测 尝试生成图片 使用多个LoRA 调整LoRA效果 10分钟上手 多图
341 1
|
12月前
|
Web App开发 JavaScript 前端开发
📚 探索未知领域:Web开发人员必备的14个超级书签! 🌐✨
本文介绍了14个为Web开发人员设计的实用书签(Bookmarklet),每个书签都嵌入了JavaScript代码,能在浏览器上快速执行特定功能。这些书签包括二维码生成器、深色模式切换、密码生成器、翻译工具、广告去除器等。文章还提供了制作书签的详细步骤、最佳实践和注意事项,帮助开发人员提高效率并优化工作流程。分享这些书签不仅可以解决日常开发中的小问题,还为开发者开辟了一个功能强大的工具箱。
681 1
|
消息中间件 程序员 数据处理
探究操作系统中的进程间通信(IPC)机制及其在现代软件开发中的应用
本文深入探讨了操作系统中的核心概念——进程间通信(IPC),揭示了其在现代软件开发中的关键作用。通过对各种IPC机制如管道、消息队列、共享内存等的详细分析,本文旨在为读者提供一个清晰的理解框架,帮助他们掌握如何在实际应用中有效利用这些技术以实现进程间的协同工作。此外,文章还将探讨IPC在高并发环境下的性能优化策略,以及如何避免常见的IPC编程错误。通过结合理论与实践,本文不仅适合希望深入了解操作系统原理的技术人员阅读,也对那些致力于提升软件质量和开发效率的程序员具有重要参考价值。
305 12
|
存储 容灾 Linux
服务器备份
服务器备份
391 2
|
存储 JavaScript 安全
|
区块链
【qt】最快的开发界面效率——混合编程3
【qt】最快的开发界面效率——混合编程
197 1
|
Android开发
libxxx.so- text relocations问题的终极解决方案
问题表现形式 错误或警告日志 当targetSdkVersion>=23且使用debug签名时,在6.0+的Android设备上运行App会输出以下错误Log: E/linker: /data/app/packagename/lib/arm/libxxx.
3353 0
|
JSON 搜索推荐 BI
快速用ELK搭建日志收集平台
快速用ELK搭建日志收集平台
321 0
|
数据采集 监控 数据挖掘
基于labview的智能大棚监控系统-上位机
基于labview的智能大棚监控系统-上位机
341 0