客户端和服务器的交流

服务器|客户端

     上一章介绍了安装设置的一些基本问题和A S P的使用,以及其所提供的内置对象。本章将进一步研究两个最常用的对象。在浏览器(或其他用户代理)和We b服务器之间,请求与响应中发生的信息交流可以通过ASP中的两个内置对象来进行访问和管理,这两个对象称为Request和Response对象。
    在ASP页中所要进行的工作几乎都要访问这两个对象,使用这两个对象的方式将影响页面的效率及可靠性。当然,它们的主要用途是访问用户发回到服务器的值,即从HTML页的< FORM >段获得或附在URL后面作为查询字符串,并创建合适的输出返回给用户,且它们可以共享很多相同的因素。例如两个对象都可以使用存储在客户端计算机上的cookie。
    因此,我们把本章分成两个独立的部分(每个对象一部分),并且首先从客户端与服务器之间的信息交流入手,然后再研究每一个对象。这将更有助于理解它们之间的关系及其重要性。
    因此,本章研究的内容是:
    客户端与服务器如何交流以传递Web页或其他资源。
    Request和Response对象的细节,以及它们之间的共同点。
    如何通过一个窗体和查询字符串访问相应的值。
    如何读入或创建cookie并存放在客户端的计算机上。
    服务器的变量是什么?如何访问和修改HTTP报头。
    说明其他相关条目的变化,如客户的证书使用。
    首先看一下客户浏览器(或“用户代理”)和ASP 的Web服务器之间交流的情况。
    当浏览器或其他的用户代理访问Web站点请求页面时,在客户服务器和Web服务器之间就产生了一个对话,我们将仔细研究这个问题,因为理解这个问题有助于掌握使用ASP的Request和Response对象的基本知识,进而才能进一步掌握ASP的更多知识。
    为节省篇幅,在本章及本书后面的内容中使用“浏览器”( browser )一词。但需要记住的是,能够访问Web页面的应用程序绝不仅只有浏览器,有许多特殊的应用程序从站点上下载网页,如为那些视力有缺陷用户设计的特殊的客户端程序或者是用通常的浏览器有其他困难的人。最显而易见的例子是搜索引擎用来访问Web上的站点的robot。全面考虑这些因素,包括普通的Web浏览器,准确的词汇应该是用户代理(user agent)。
    页面请求的对话
    当一个浏览器向We b站点提出页面请求时,显然必须告诉服务器,其请求的是哪一个页面。首先要做的是通过域名与服务器建立连接,然后提供所请求页面的全路径和名称。为什么要全路径和名称?Web是一个无国界的环境,所以必须创造一个会话标识每个客户(将在下一章介绍ASP如何做到这点)。
    这就意味着每当服务器完成向客户发送页面后,服务器就彻底忘记了这个客户。因此,当客户请求下一个页面时,与一个新的访问者是完全相同的。服务器无法记住这个客户,相应的,也就无法判断它们上次请求的页面是哪一个。因此,不能使用相对路径来提供一个页
面,即使页面包含一个相对的链接也不行,例如:

    浏览器将自动建立完整的新页面的URL,方法是使用当前页的域和路径;或使用页面< HEAD >段中的< BASE >元素,告诉浏览器一个页面中所有链接的基URL是什么。例如:

    当把鼠标指向一个页面的链接时,可在浏览器的状态栏中看到如图2 - 1所示的情况。当前页面的路径和当前域名或基域名已经与请求的页面名结合在一起了。

    1. 客户请求的细节
    所请求页面的全路径和名称的组合是浏览器请求页面时发往服务器的唯一信息。浏览器的请求也能包含浏览器宿主的信息和客户端运行的操作系统。实际的信息内容将随着浏览器的不同而有相应的变化,只有很少一部分能够由其他的应用程序如搜索引擎robot提供。为了更清楚地了解该信息,下面是从IE 5.0 发出的一个对页面http://www.wrox.com/Store/Download.asp的请求信息:

    从中可以看出,这些信息中有关于用户代理和用户连接的细节(如缺省的语言),也有能够接受的文件或应用程序的类型列表,这些都是MIME类型的,在后面将会见到更多。浏览器能够接受几种图像文件及多种Microsoft Office文件类型。“标准”的文件类型,如text/html和text/text没有列在其中。文件列表中*/*表示可向浏览器发回任何类型的文件,由浏览器解释或通过一个插件( plug-in )应用程序来进行解释。
    cookie:条目包含的cookie存放在客户端的计算机上,并仅对该域有效。假如请求是点击链接的结果,而不是在浏览器的地址栏直接输入URL,则Referer:条目被显示,它包含了链接页面的完整的URL。
    Host:条目包含客户计算机的IP地址或名称。然而,这还不足以准确辨别客户机。因为它们通过ISP连接时, IP地址是动态分配的,或者通过一个代理服务器连接时,IP地址是代理机的而不是实际的客户机的。
    2. 服务器响应的细节信息
    为响应上述的请求,并对匿名的浏览器(即用户不必提供用户名和访问口令)提供请求的页面,下面的内容是从服务器发往客户机的:

    可以看出服务器向客户端说明自己所用的软件及版本,第一行表明所使用的是HTTP协议,及返回码的状态。信息“ 200 OK”表示请求被接受并得到了满足。后面的信息是被返回的页面的细节,包括MIME类型(Content-Length:)、大小(字节)、最近更改的时间,和返回客户端存储的cookie。响应中的其他信息是页面内容的信息流。
    在某些情况下,服务器响应一个请求后,不能返回一个页面,也许因为页面不存在,或者客户没有相应权限来访问它。我们将在本书后续章节讨论安全问题。现在,对于请求页面不存在的情况(例如用户在浏览器的地址栏输入了错误的URL),返回的信息开头为:

    这里,状态码和信息表明客户请求的页面无法找到。浏览器可使用这个信息向用户显示相应的信息(这种情况在IE 5.0中不显示服务器的响应信息,而显示相应“帮助性”的错误提示页面),也可显示服务器创建的缺省页面(依赖于服务器的设置)。
    至此,我们已经看到了客户机与服务器交互作用中的一些细节,下面介绍ASP对象Request和Response如何把这些转换成相应的值。

时间: 2024-10-28 09:51:02

客户端和服务器的交流的相关文章

php-关于安卓客户端向服务器传送图片并生成缩略图的问题

问题描述 关于安卓客户端向服务器传送图片并生成缩略图的问题 我本来是在安卓客户端生成缩略图的,然后和原图一起发送到服务器,现在改用在服务器端用php生成缩略图,本机实验成功,但是如果是客户端传来的图片,只能保存原图,不能用服务器生成缩略图.我判断了一下,因为生成缩略图要用$src_image=ImageCreateFromBMP($uploads_dir.$uploadname)来调用原图,是不是因为客户端向服务器端发送时,原图还未上传好就调用原图引发错误了?可是我已经加了一个if(move_u

C# 网络编程之Tcp实现客户端和服务器聊天

      最近使用Socket网络套接字编程中,在同步与异步通讯中客户端与服务器总是无法响应,但在学习Tcp协议编程中完成了通讯聊天功能,下面简单讲讲我最近学到的及Tcp聊天的源代码及详细注释.       Tcp协议是一个传输层的协议,在Tcp协议编程中它通常使用的是3个类,其命名空间为System.Net.Sockets:       1.TcpListener:基于TCP协议服务端开发,监听IP地址和端口号是否连接.      该类常用的方法有Start()开始监听.AcceptSock

游戏大厅从基础开始(3.5)——客户端与服务器的连接

可能要犯大忌讳 本次只有代码 所以补充两句 正在实现策略模式的constructor 所以最 近没有时间整理注释 大家凑合看 随后补说明 Code Namespace Communicate.TCP Class TCPLinkListener Inherits Global.WayneGameSolution.Communicate.LinkListener Public Shared ReadOnly propertyKeys As String() = {"Port", "

Variable v1.2--在客户端和服务器之间传送变量

Variable是一个用于在客户端与服务器之间传递数据的控件.Variable v1.2对1.1做了以下改进: (1)实现了ICallbackEventHandler接口,支持在ASP.NET网页中不经过回发在客户端与服务器之间传递 数据: (2)增强了客户端VariableManager的功能: Variable v1.2 使用指南: 1.不经过回发在客户端与服务器之间传递数据 (1)在客户端发送回调将数据传送到服务器 在客户端发送回调将数据传送到服务器非常简单,只需创建一个回调函数并调用 V

Windows7安装Telnet客户端和服务器

  公司买了linux系统,要我实现linux和window系统的之间的通讯,从零开学学习吧,首先学习安装Telnet客户端和服务器. Windows7 Telnet 的安装和启动 Telnet是系统管理员常用的远程登录和管理工具,在Windows2000/XP/2003 /Vista系统中它作为标准的系统组件集成到系统中供用户使用.不过默认情况下Telnet服务是被禁止,通常情况下我们只需运行services.msc打开服务管理,找到Telnet服务项设置其启动类型为"手动"或者&q

java 客户端 服务器-java客户端和服务器通信

问题描述 java客户端和服务器通信 1C try{ Socket s=new Socket(""127.0.0.1""9997); System.out.println(s); InputStreamReader isr=new InputStreamReader(s.getInputStream()); br=new BufferedReader(isr);//接受客户端的消息 pw =new PrintWriter(s.getOutputStream()tru

客户端和服务器的中间件是什么

问题描述 客户端和服务器的中间件是什么 课程设计,老师让我们设计一个客户端服务器模式(CS)的程序,要求有一个中间件,因为不让直接用客户端连接服务器. 老师说中间件就像一个网关,可以弄的简单点,但是我平常弄的都是直接在客户端登陆服务器修改服务器的数据,不知道 这个中间件该做什么,该怎么做.我想问下,这个中间件应该怎么弄,大概意思说下就可以. 谢谢. 解决方案 中间间网关,其实就是在客户端和服务器中间的一种服务器,他提供透传的功能,即服务器和客户端的交互比较通过gate中转. 通常只有网关有外网I

Socket 通信原理(Android客户端和服务器以TCP&amp;amp;&amp;amp;UDP方式互通)

ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教. 一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那

ios项目中客户端与服务器通信 认证加密怎么做?

问题描述 ios项目中客户端与服务器通信 认证加密怎么做? ios项目中客户端与服务器通信 认证加密怎么做? 主要是还不理解 解决方案 Apple 的 iAP认证,需要参考协议 + 加密 IC 来实现不懂就要看协议,是比较复杂,且只是 E 文版本的文档 解决方案二: iAP是内购吧,与问题不太相关吧..通信中感觉主要做好这几点吧1.HTTPS2.字符串参数.文件等敏感信息传输过程中保持加密状态,至于加密算法,建议使用非对称的RSA