﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-Programming Life-随笔分类-HTTP</title><link>http://www.phpweblog.net/killjin/category/406.html</link><description>相信不能相信的，完成不能完成的。矛盾，就象征进步。</description><language>zh-cn</language><lastBuildDate>Thu, 17 Jan 2008 14:03:15 GMT</lastBuildDate><pubDate>Thu, 17 Jan 2008 14:03:15 GMT</pubDate><ttl>60</ttl><item><title>页面插入 FLASH</title><link>http://www.phpweblog.net/killjin/archive/2008/01/17/2702.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Thu, 17 Jan 2008 07:52:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2008/01/17/2702.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2702.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2008/01/17/2702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2702.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2702.html</trackback:ping><description><![CDATA[&lt;embed src="http://www.xxx.com" width="766" height="194" type="application/x-shockwave-flash" quality="high" wmode="transparent" /&gt; <br><br>不知道规范不规范。
<img src ="http://www.phpweblog.net/killjin/aggbug/2702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2008-01-17 15:52 <a href="http://www.phpweblog.net/killjin/archive/2008/01/17/2702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>表单和头部缓存指令</title><link>http://www.phpweblog.net/killjin/archive/2007/12/29/2620.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Fri, 28 Dec 2007 18:21:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/29/2620.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2620.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/29/2620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2620.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2620.html</trackback:ping><description><![CDATA[1 客户端验证<br><br>PHP代码<br>我们可以使用JavaScript在客户端来校验表单内容，如果数据正确才允许提交到服务器端，这是Web开发中最常见的方法。利用客户端验证的好处是用户反馈快，无须直接到服务器请求信息后再下载HTML页。大多数验证是放在表单的"onSubmit"事件中，当JavaScript处理表单验证，用户试图递交表单，则立即返回布尔值False，浏览器也不会进行表单提交，方便用户立即纠正错误，因为校验动作都在客户端，从而减小了服务器端的负荷。其缺点是，客户端浏览器如IE、Firefox，它们对所支持的JavaScript脚本解释并不完全相同，在细节上彼此也有些差异。此外，一些用户为了安全，在浏览器端禁止了对JavaScript的支持，或者根本就是恶意的关闭，这样客户端浏览器就完全不理会客户端验证，为避免这个安全问题，所以仍需要在服务器端进行再次数据验证。&nbsp; &nbsp; <br><br>2服务器验证<br><br>PHP代码<br>使用服务器端数据验证，是利用PHP脚本来处理表单数据。与客户端验证相比，使用服务器验证的优点在于：它更安全，与所有浏览器无缝对接；缺点是代价稍高，用户反馈慢、增加了服务器负荷。&nbsp; &nbsp; <br>使用服务器端验证另一大的优势是，你可以用PHP对校验规则进行任意的修改，利用PHP的多种函数和灵活特点，可以很方便更改校验的数据类型、长度，以及检查文本框范围内的号码等。&nbsp; &nbsp; <br>另外，如果用PHP连接MySQL数据库才能验证用户名是否存在，这种情况下，根本不可能使用客户端脚本。&nbsp; &nbsp;<br>3避免表单重复提交<br><br>用户提交表单时可能因为网速的原因，或者网页被恶意刷新，致使同一条记录重复插入到数据库中，这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手，设法避免同一表单的重复提交。<br>1．使用客户端脚本提到客户端脚本，经常使用的是JavaScript进行常规输入验证。在下面的例子中，我们使用它处理表单的重复提交问题，请看下面的代码：<br><br><br><br>XML/HTML代码<br>&lt;form method="post" name="register" action="test.php" enctype="multipart/form-data"&gt;&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp; &nbsp;&lt;input name="text" type="text" id="text" /&gt;&nbsp; &nbsp;<br>&nbsp; &nbsp;&lt;input name="cont" value="提交" type="button" FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'"&gt;正在提交,请等待...';document.register.cont.disabled=true;document.the_form.submit();"&gt;&nbsp; &nbsp;&nbsp;&nbsp;<br>&lt;/form&gt;&nbsp; &nbsp;<br>当用户单击&#8220;提交&#8221;按钮后，该按钮将变为灰色不可用状态<br><br>上面的例子中使用OnClick事件检测用户的提交状态，如果单击了&#8220;提交&#8221;按钮，该按钮立即置为失效状态，用户不能单击按钮再次提交。<br>还有一个方法，也是利用JavaScript的功能，但是使用的是OnSubmit()方法，如果已经提交过一次表单，将立即弹出对话框，<br><br><br><br>JavaScript代码<br>&lt;script language="javascript"&gt;&nbsp; &nbsp; <br>&lt;!--&nbsp; &nbsp; <br>&nbsp; &nbsp;var submitcount=0;&nbsp; &nbsp; <br>&nbsp; &nbsp;function submitOnce (form){&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;if (submitcount == 0){&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;submitcount++;&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return true;&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;} else{&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;alert("正在操作，请不要重复提交，谢谢！");&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return false;&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;}&nbsp; &nbsp; <br>&nbsp; &nbsp;}&nbsp; &nbsp; <br>//--&gt;&nbsp; &nbsp; <br>&lt;/script&gt;&nbsp; &nbsp; <br>&nbsp; &nbsp;<br>&lt;form name="the_form" method="post" action="" &gt;&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp; &nbsp;&lt;input name="text" type="text" id="text" /&gt;&nbsp; &nbsp; <br>&nbsp; &nbsp;&lt;input name="cont" value="提交" type="submit"&gt;&nbsp; &nbsp;&nbsp;&nbsp;<br>&lt;/form&gt;&nbsp; &nbsp;<br>如果用户已经单击&#8220;提交&#8221;按钮，该脚本会自动记录当前的状态，并将submitcount变量自加1，当用户试图再次提交时，脚本判断submitcount变量值非零，提示用户已经提交，从而避免重复提交表单。<br><br>2．使用Cookie处理使用Cookie记录表单提交的状态，根据其状态可以检查是否已经提交表单，请见下面的代码<br><br><br><br>PHP代码<br>&lt;?php&nbsp; &nbsp; <br>&nbsp; &nbsp;if(isset($_POST['go'])){&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;setcookie("tempcookie","",time()+30);&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;header("Location:".$_SERVER[PHP_SELF]);&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;exit();&nbsp; &nbsp; <br>&nbsp; &nbsp;}&nbsp; &nbsp; <br>&nbsp; &nbsp;if(isset($_COOKIE["tempcookie"])){&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;setcookie("tempcookie","",0);&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;echo "您已经提交过表单";&nbsp; &nbsp; <br>&nbsp; &nbsp;}&nbsp; &nbsp; <br>?&gt;&nbsp; &nbsp; <br>如果客户端禁止了Cookie，该方法将不起任何作用，这点请注意<br><br>3．使用Session处理利用PHP的Session功能，也能避免重复提交表单。Session保存在服务器端，在PHP运行过程中可以改变Session变量，下次访问这个变量时，得到的是新赋的值，所以，可以用一个Session变量记录表单提交的值，如果不匹配，则认为是用户在重复提交，请见如下代码：<br><br>PHP代码<br>&lt;?php&nbsp; &nbsp; <br>&nbsp; &nbsp;session_start();&nbsp; &nbsp; <br>&nbsp; &nbsp;//根据当前SESSION生成随机数&nbsp; &nbsp; <br>&nbsp; &nbsp;$code = mt_rand(0,1000000);&nbsp; &nbsp; <br>&nbsp; &nbsp;$_SESSION['code'] = $code;&nbsp; &nbsp; <br>?&gt;&nbsp; &nbsp; <br>在页面表单上将随机数作为隐藏值进行传递，代码如下：<br><br>&lt;input type="hidden" name="originator" value="&lt;?=$code?&gt;"&gt;<br><br>在接收页面的PHP代码如下：<br><br>PHP代码<br>&lt;?php&nbsp; &nbsp; <br>&nbsp; &nbsp;session_start();&nbsp; &nbsp; <br>&nbsp; &nbsp;if(isset($_POST['originator'])) {&nbsp; &nbsp; <br>&nbsp; &nbsp;if($_POST['originator'] == $_SESSION['code']){&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;// 处理该表单的语句，省略&nbsp; &nbsp; <br>&nbsp; &nbsp;}else{&nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;echo &#8216;请不要刷新本页面或重复提交表单！&#8217;;&nbsp; &nbsp; <br>&nbsp; &nbsp;}&nbsp; &nbsp; <br>}&nbsp; &nbsp; <br>?&gt;&nbsp; &nbsp;<br>4．使用header函数转向除了上面的方法之外，还有一个更简单的方法，那就是当用户提交表单，服务器端处理后立即转向其他的页面，代码如下所示。<br><br>PHP代码<br>if (isset($_POST['action']) &amp;&amp; $_POST['action'] == 'submitted') {&nbsp; &nbsp; <br>&nbsp; &nbsp;//处理数据，如插入数据后，立即转向到其他页面&nbsp; &nbsp; <br>&nbsp; &nbsp;header('location:submits_success.php');&nbsp; &nbsp; <br>}&nbsp; &nbsp; <br>这样，即使用户使用刷新键，也不会导致表单的重复提交，因为已经转向新的页面，而这个页面脚本已经不理会任何提交的数据了。<br><br>4表单过期的处理<br><br>在开发过程中，经常会出现表单出错而返回页面的时候填写的信息全部丢失的情况，为了支持页面回跳，可以通过以下两种方法实现。<br>1．使用header头设置缓存控制头Cache-control。<br>header('Cache-control: private, must-revalidate');<br>//支持页面回跳<br><br>2．使用session_cache_limiter方法。<br>session_cache_limiter('private, must-revalidate'); //要写在session_start方法之前<br>下面的代码片断可以防止用户填写表单的时候，单击&#8220;提交&#8221;按钮返回时，刚刚在表单上填写的内容不会被清除：<br>session_cache_limiter('nocache');<br>session_cache_limiter('private');<br>session_cache_limiter('public');<br>session_start();<br>//以下是表单内容，这样在用户返回该表单时，已经填写的内容不会被清空<br>将该段代码贴到所要应用的脚本顶部即可。<br>Cache-Control消息头域说明Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。<br>请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh和only-if-cached，响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate和max-age。各个消息中的指令含义如表5-3所示。<br>表5-3<br><br><br>缓存指令<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br><br>说&nbsp; &nbsp; 明<br>public&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;指示响应可被任何缓存区缓存<br>private&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;指示对于单个用户的整个或部分响应消息，不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息，此响应消息对于其他用户的请求无效<br>no-cache&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;指示请求或响应消息不能缓存<br>no-store&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存<br>max-age&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;指示客户机可以接收生存期不大于指定时间（以秒为单位）的响应<br>min-fresh&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;指示客户机可以接收响应时间小于当前时间加上指定时间的响应<br>max-stale&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值，那么客户机可以接收超出超时期指定值之内的响应消息<br><br>有关Session和Cookie的介绍，详细内容请参阅第10章&#8220;PHP会话管理&#8221;。<br><br><br>5判断表单动作的技巧<br><br>表单可以通过同一个程序来分配应该要处理的动作，在表单中有不同的逻辑，要怎么判别使用者按下的按钮内容不过是个小问题。<br>其实只要通过提交按钮的name 就可以知道了，表单在提交出去的时候，只有按下的submit类型的按钮才会被送到表单数组去，所以只要判断按钮的值就可以知道使用者按下哪一个按钮，以如下表单为例：<br><br>XML/HTML代码<br>&lt;FORM method="POST" Action=test.php&gt;&nbsp; &nbsp;<br>&nbsp; &nbsp;&lt;input type=submit name="btn" value="a"&gt;&nbsp; &nbsp;<br>&nbsp; &nbsp;&lt;input type=submit name="btn" value="b"&gt;&nbsp; &nbsp;<br>&lt;/FORM&gt;&nbsp; &nbsp;<br>当使用者按下&#8220;a&#8221;按钮的时候btn=a，按下&#8220;b&#8221;按钮，则btn=b。<br>另外也可以通过提交按钮的名字（name）来判断，请见如下代码：<br><br><br><br>PHP代码<br>&lt;FORM method="POST" Action=test.php&gt;&nbsp; &nbsp; <br>&nbsp; &nbsp;&lt;input type=submit name="a" value="提交A"&gt;&nbsp; &nbsp; <br>&nbsp; &nbsp;&lt;input type=submit name="b" value="提交B"&gt;&nbsp; &nbsp; <br>&lt;/FORM&gt;&nbsp; &nbsp;<br>这样只要POST/GET的参数里面有a或b，就可以知道按下的按钮是哪个。<br><br>&lt;?php<br>&nbsp; &nbsp;print_r($_POST);<br>?&gt;
<img src ="http://www.phpweblog.net/killjin/aggbug/2620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-29 02:21 <a href="http://www.phpweblog.net/killjin/archive/2007/12/29/2620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP服务器状态代码定义（Status Code Definitions）</title><link>http://www.phpweblog.net/killjin/archive/2007/12/29/2619.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Fri, 28 Dec 2007 18:07:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/29/2619.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2619.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/29/2619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2619.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2619.html</trackback:ping><description><![CDATA[<p><strong><span>1.1 </span></strong><strong><span>消息<span>1xx</span>（<span>Informational 1xx</span>）</span></strong><span> <br></span><span>该类状态代码用于表示临时回应。临时回应由状态行（<span>Status-Line</span>）及可选标题组成， 由空行终止。<span>HTTP/1.0</span>中没有定义任何<span>1xx</span>的状态代码，所以它们不是对<span>HTTP/1.0</span>请求的 　　合法回应。实际上，它们主要用于实验用途，这已经超出本文档的范围。<span> <br><strong>1.2 </strong></span><strong>成功<span>2xx</span>（<span>Successful 2xx</span>）</strong><span> <br></span>表示客户端请求被成功接收、理解、接受。<span> <br><strong>200 OK</strong> <br></span>请求成功。回应的信息依赖于请求所使用的方法，如下：<span> <br>GET </span>要请求的资源已经放在回应的实体中了。<span> <br>HEAD </span>没有实体主体，回应中只包括标题信息。</span><span></span><span> <br>POST </span><span>实体（描述或包含操作的结果）。<span> <br><strong>201 Created</strong> <br></span>请求完成，结果是创建了新资源。新创建资源的<span>URI</span>可在回应的实体中得到。原始服务器应在发出该状态代码前创建该资源。如果该操作不能立即完成，服务器必须在该资源可用时在回应主体中给出提示，否则，服务器端应回应<span>202</span>（可被接受）。<span> <br></span>在本文定义的方法，只有<span>POST</span>可以创建资源。<span> <br><strong>202 Accepted</strong> <br></span>请求被接受，但处理尚未完成。请求可能不一定会最终完成，有可能被处理过程随时中断，在这种情况下，没有办法在异步操作中重新发送状态代码。<span> <br>202</span>回应是没有义务的，这样做的目的是允许服务器不必等到用户代理和服务器间的连接结束，就可以响应其它过程的请求（象每天运行一次的，基于批处理的过程）。<span> <br></span>在某些回应中返回的实体中包括当前请求的状态指示、状态监视器指针或用户对请求能否实现的评估信息。<span><br><strong>204 No Content</strong> <br></span>服务器端已经实现了请求，但是没有返回新的信息。如果客户是用户代理，则勿需为此更新自身的文档视图。该回应主要是为了在不影响用户代理激活文档视图的前提下，进行<span>script</span>语句的输入及其它操作。该回应还可能包括新的、以实体标题形式表示的元信息，它可被当前用户代理激活视图中的文档所使用。<span> <br><strong>1.3 </strong></span><strong>重定向（<span>Redirection 3xx</span>）</strong><span> <br></span>该类状态码表示用户代理要想完成请求，还需要发出进一步的操作。这些操作只有当后跟的请求是<span>GET</span>或<span>HEAD</span>时，才可由用户代理来实现，而不用与用户进行交互。用户代理永远也不要对请求进行<span>5</span>次以上的重定向操作，这样可能导致无限循环。<span> <br><strong>300 Multiple Choices</strong> <br></span>该状态码不被<span>HTTP/1.0</span>的应用程序直接使用，只是做为<span>3xx</span>类型回应的缺省解释。存在多个可用的被请求资源。<span> <br></span>除非是<span>HEAD</span>请求，否则回应的实体中必须包括这些资源的字符列表及位置信息，由用户或用户代理来决定哪个是最适合的。<span> <br></span>如果服务器有首选，它应将对应的<span>URL</span>信息存放在位置域（<span>Location field</span>）处，用户代理会根据此域的值来实现自动的重定向。<span> <br><strong>301 Moved Permanently </strong><br></span>请求到的资源都会分配一个永久的<span>URL</span>，这样就可以在将来通过该<span>URL</span>来访问此资源。有编辑链接功能的客户端会尽可能地根据服务器端传回的新链接而自动更新请求<span>URI</span>。 新的<span>URL</span>必须由回应中的位置域指定。除非是<span>HEAD</span>请求，否则回应的实体主体 　　（<span>Entity-Body</span>）必须包括对新<span>URL</span>超链接的简要描述。<span> <br></span>如果用<span>POST</span>方法发出请求，而接收到<span>301</span>回应状态码。在这种情况下，除非用户确认，否则用户代理不必自动重定向请求，因为这将导致改变已发出请求的环境。<span> <br></span>注意：当在接收到<span>301</span>状态码后而自动重定向<span>POST</span>请求时，一些现存的用户代理会错误地将其改为<span>GET</span>请求。<span> <br><strong>302 Moved Temporarily<br></strong></span>请求到的资源在一个不同的<span>URL</span>处临时保存。因为重定向有时会被更改，客户端应继续用请求<span>URI</span>来发出以后的请求。新的<span>URL</span>必须由回应中的位置域指定。除非是<span>HEAD</span>请求，否则回应的实体主体 （<span>Entity-Body</span>）必须包括对新<span>URL</span>超链接的简要描述。<span> <br></span>如果用<span>POST</span>方法发出请求，而接收到<span>302</span>回应状态码。在这种情况下，除非用户确认，否则用户代理不必自动重定向请求，因为这将导致改变已发出请求的环境。<span> <br></span>注意：当在接收到<span>302</span>状态码后而自动重定向<span>POST</span>请求时，一些现存的用户代理会错误地将其改为<span>GET</span>请求。<span> <br><strong>304 Not Modified </strong><br></span>如果客户端成功执行了条件<span>GET</span>请求，而对应文件自<span>If-Modified-Since</span>域所指定的日期以来就没有更新过，服务器应当回应此状态码，而不是将实体主体发送给客户端。回应标题域中只应包括一些相关信息，比如缓存管理器、与实体最近更新（<span>entity's Last-Modified</span>）日期无关的修改。相关标题域的例子有：日期、服务器、过期时间。每当<span>304</span>回应中给出的域值发生变化，缓存都应当对缓存的实体进行更新。<span> <br><strong>1.4 </strong></span><strong>客户端错误（<span>Client Error </span>）<span>4xx </span></strong><span><br>4xx</span>类的状态码表示客户端发生错误。如果客户端在收到<span>4xx</span>代码时请求还没有完成，它应当立即终止向服务器发送数据。除了回应<span>HEAD</span>请求外，不论错误是临时的还是永久的，服务器端都必须在回应的实体中包含错误状态的解释。这些状态码适用于任何请求方法。<span> <br></span>注意：如果客户端正在发送数据，服务器端的<span>TCP</span>实现应当小心，以确保客户端在关闭输入连接之前收到回应包。如果客户端在关闭后仍旧向服务器发送数据，服务器会给客户　　端发送一个复位包，清空客户端尚未处理的输入缓冲区，以终止<span>HTTP</span>应用程序的读取、解释活动。<span> <br><strong>400 </strong></span><strong>非法请求（<span>Bad Request</span>）</strong><span> <br></span>如果请求的语法不对，服务器将无法理解。客户端在对该请求做出更改之前，不应再次向服务器重复发送该请求。<span> <br><strong>401 </strong></span><strong>未授权（<span>Unauthorized</span>）</strong><span> <br></span>请求需要用户授权。回应中的<span>WWW-Authenticate</span>标题域（<span>10.16</span>节）应提示用户以授权方式请求资源。客户端应使用合适的授权标题域（<span>10.2</span>节）来重复该请求。如果请求中已经包括了授权信任信息，那回应的<span>401</span>表示此授权被拒绝。如果用户代理在多次尝试之后，回应一样还是返回<span>401</span>状态代码，用户应当察看一下回应的实体，因为在实体中会包括一些相关的动态信息。<span>HTTP</span>访问授权会在<span>11</span>节中解释。<span> <br><strong>403 </strong></span><strong>禁止（<span>Forbidden</span>）</strong><span> <br></span>服务器理解请求，但是拒绝实现该请求。授权对此没有帮助，客户端应当停止重复发送此请求。如果不是用<span>HEAD</span>请求方法，而且服务器端愿意公布请求未被实现原因的前提下，服务器会将拒绝原因写在回应实体中。该状态码一般用于服务器端不想公布请求被拒绝的细节或没有其它的回应可用。<span> <br><strong>404 </strong></span><strong>没有找到（<span>Not Found</span>）</strong><span> <br></span>服务器没有找到与请求<span>URI</span>相符的资源。<span>404</span>状态码并不指明状况是临时性的还是永久性的。如果服务器不希望为客户端提供这方面的信息，还回应<span>403</span>（禁止）状态码。<span> <br><strong>1.5 </strong></span><strong>服务器错误（<span>Server Error </span>）<span>5xx <br></span></strong>回应代码以<span>&#8216;5&#8217;</span>开头的状态码表示服务器端发现自己出现错误，不能继续执行请求。如果客户端在收到<span>5xx</span>状态码时，请求尚未完成，它应当立即停止向服务器发送数据。除了回应<span>HEAD</span>请求外，服务器应当在其回应实体中包括对错误情况的解释、并指明是临时性的还永久性的。<span> <br></span>这类回应代码没有标题域，可适用于任何请求方法。<span><br><strong>500 </strong></span><strong>服务器内部错误（<span>Internal Server Error</span>）</strong><span> <br></span>服务器碰到了意外情况，使其无法继续回应请求。<span> <br><strong>501 </strong></span><strong>未实现（<span>Not Implemented</span>）</strong><span> <br></span>服务器无法提供对请求中所要求功能的支持。如果服务器无法识别请求方法就会回应此状态代码，这意味着不能回应请求所要求的任何资源。<span> <br><strong>502 </strong></span><strong>非法网关（<span>Bad Gateway</span>） </strong><span><br></span>充当网关或代理的服务器从要发送请求的上游（<span>upstream</span>）服务器收到非法的回应。<span> <br><strong>503 </strong></span><strong>服务不可用（<span>Service Unavailable</span>）</strong><span> <br></span>服务器当前无法处理请求。这一般是由于服务器临时性超载或维护引起的。该状态码暗示情况是暂时性的，要产生一些延迟。<span> <br></span>注意：<span>503</span>状态码并没有暗示服务器在超载时一定要返回此状态码。一些服务器可能希望在超载时采用简单处理，即断掉连接。</span>
<p>&nbsp;
<p><strong><span>IIS </span></strong><strong><span>错误代码大汇总</span></strong><strong></strong>
<p><span>400 </span><span>无法解析此请求。<span> 401.1 </span>未经授权：访问由于凭据无效被拒绝。<span> <br>401.2 </span>未经授权<span>: </span>访问由于服务器配置倾向使用替代身份验证方法而被拒绝。<span> <br>401.3 </span>未经授权：访问由于<span> ACL </span>对所请求资源的设置被拒绝。<span> <br>401.4 </span>未经授权：<span>Web </span>服务器上安装的筛选器授权失败。<span> <br>401.5 </span>未经授权：<span>ISAPI/CGI </span>应用程序授权失败。<span> <br>401.7 </span>未经授权：由于<span> Web </span>服务器上的<span> URL </span>授权策略而拒绝访问。<span> <br>403 </span>禁止访问：访问被拒绝。<span> <br>403.1 </span>禁止访问：执行访问被拒绝。<span> <br>403.2 </span>禁止访问：读取访问被拒绝。<span> <br>403.3 </span>禁止访问：写入访问被拒绝。<span> <br>403.4 </span>禁止访问：需要使用<span> SSL </span>查看该资源。<span> <br>403.5 </span>禁止访问：需要使用<span> SSL 128 </span>查看该资源。<span> <br>403.6 </span>禁止访问：客户端的<span> IP </span>地址被拒绝。<span> <br>403.7 </span>禁止访问：需要<span> SSL </span>客户端证书。<span> <br>403.8 </span>禁止访问：客户端的<span> DNS </span>名称被拒绝。 <span><br>403.9 </span>禁止访问：太多客户端试图连接到<span> Web </span>服务器。<span> <br>403.10 </span>禁止访问：<span>Web </span>服务器配置为拒绝执行访问。<span> <br>403.11 </span>禁止访问：密码已更改。<span> <br>403.12 </span>禁止访问：服务器证书映射器拒绝了客户端证书访问。<span> <br>403.13 </span>禁止访问：客户端证书已在<span> Web </span>服务器上吊销。<span> <br>403.14 </span>禁止访问：在<span> Web </span>服务器上已拒绝目录列表。<span> <br>403.15 </span>禁止访问：<span>Web </span>服务器已超过客户端访问许可证限制。<span> <br>403.16 </span>禁止访问：客户端证书格式错误或未被<span> Web </span>服务器信任。<span> <br>403.17 </span>禁止访问：客户端证书已经到期或者尚未生效。<span> <br>403.18 </span>禁止访问：无法在当前应用程序池中执行请求的<span> URL</span>。<span> <br>403.19 </span>禁止访问：无法在该应用程序池中为客户端执行<span> CGI</span>。<span> <br>403.20 </span>禁止访问：<span>Passport </span>登录失败。<span> <br>404 </span>找不到文件或目录。<span> <br>404.1 </span>文件或目录未找到：网站无法在所请求的端口访问。<span> <br><br>&nbsp;&nbsp;&nbsp; </span>注意<span> 404.1 </span>错误只会出现在具有多个<span> IP </span>地址的计算机上。如果在特定<span> IP </span>地址<span>/</span>端口组合上收到客户端请求，而且没有将<span> IP </span>地址配置为在该特定的端口上侦听，则<span> IIS </span>返回<span> 404.1 HTTP </span>错误。例如，如果一台计算机有两个<span> IP </span>地址，而只将其中一个<span> IP </span>地址配置为在端口<span> 80 </span>上侦听，则另一个<span> IP </span>地址从端口<span> 80 </span>收到的任何请求都将导致<span> IIS </span>返回<span> 404.1 </span>错误。只应在此服务级别设置该错误，因为只有当服务器上使用多个<span> IP </span>地址时才会将它返回给客户端。</span>
<p><span>404.2 </span><span>文件或目录无法找到：锁定策略禁止该请求。<span> <br>404.3 </span>文件或目录无法找到：<span>MIME </span>映射策略禁止该请求。<span> <br>405 </span>用于访问该页的<span> HTTP </span>动作未被许可。<span> <br>406 </span>客户端浏览器不接受所请求页面的<span> MIME </span>类型。<span> <br>407 Web </span>服务器需要初始的代理验证。<span> <br>410 </span>文件已删除。<span> <br>412 </span>客户端设置的前提条件在<span> Web </span>服务器上评估时失败。<span> <br>414 </span>请求<span> URL </span>太大，因此在<span> Web </span>服务器上不接受该<span> URL</span>。<span> <br>500 </span>服务器内部错误。<span> <br>500.11 </span>服务器错误：<span>Web </span>服务器上的应用程序正在关闭。<span> <br>500.12 </span>服务器错误：<span>Web </span>服务器上的应用程序正在重新启动。<span> <br>500.13 </span>服务器错误：<span>Web </span>服务器太忙。<span> <br>500.14 </span>服务器错误：服务器上的无效应用程序配置。<span> <br>500.15 </span>服务器错误：不允许直接请求<span> GLOBAL.ASA</span>。<span> <br>500.16 </span>服务器错误：<span>UNC </span>授权凭据不正确。<span> <br>500.17 </span>服务器错误：<span>URL </span>授权存储无法找到。<span> <br>500.18 </span>服务器错误：<span>URL </span>授权存储无法打开。<span> <br>500.19 </span>服务器错误：该文件的数据在配置数据库中配置不正确。<span> <br>500.20 </span>服务器错误：<span>URL </span>授权域无法找到。<span> <br>500 100 </span>内部服务器错误：<span>ASP </span>错误。<span> <br>501 </span>标题值指定的配置没有执行。<span> <br>502 Web </span>服务器作为网关或代理服务器时收到无效的响应。<span> <br><br>WIN2003 SERVER IIS6.0 ASP </span>错误解析<span> <br><br><strong><span>&nbsp;&nbsp;&nbsp; </span></strong></span><strong><span>事件<span> ID </span>描述 </span></strong><strong><span><br></span></strong><span><br>0100 </span>内存不足。无法分配所需的内存。<span> <br>0101 </span>意外错误。函数返回<span> |</span>。<span> <br>0102 </span>要求字符串输入。函数需要字符串输入。<span> <br>0103 </span>要求数字输入。函数需要数字输入。<span> <br>0104 </span>不允许操作。<span> <br>0105 </span>索引超出范围。数组索引超出范围。<span> <br>0106 </span>类型不匹配。遇到未处理的数据类型。<span> <br>0107 </span>数据大小太大。请求中发送的数据大小超出允许的限制。<span> <br>0108 </span>创建对象失败。创建对象<span> '%s' </span>时出错。<span> <br>0109 </span>成员未找到。<span> <br>0110 </span>未知的名称。<span> <br>0111 </span>未知的界面。<span> <br>0112 </span>参数丢失。<span> </span></span>
<p><span>0113 </span><span>脚本超时。超过了脚本运行的最长时间。可以通过为<span> Server.ScriptTimeout </span>属性指定一个新值或在<span> IIS </span>管理工具中修改值来更改此限制。<span> <br>0114 </span>对象不可用于自由线程。应用程序对象仅接受自由线程对象；而对象<span> '%s' </span>不可用于自由线程。<span> <br>0115 </span>意外错误。外部对象中发生一个可捕捉的错误<span> (%X)</span>。脚本无法继续运行。<span> <br>0116 </span>脚本分隔符结束标记丢失。脚本块缺少脚本结束标记<span> (%&gt;)</span>。<span> <br>0117 </span>脚本结束标记丢失。脚本块缺少脚本结束标记<span> (&lt;/SCRIPT&gt;) </span>或标记结束符号<span> (&gt;)</span>。<span> <br>0118 </span>对象的结束标记丢失。对象块缺少对象结束标记<span> (&lt;/OBJECT&gt;) </span>或标记结束符号<span> (&gt;)</span>。<span> <br>0119 Classid </span>或<span> Progid </span>属性丢失。对象实例<span> '|' </span>在对象标记中需要有效的<span> Classid </span>或<span> Progid</span>。<span> <br>0120 Runat </span>属性无效。脚本标记或对象标记的<span> Runat </span>属性只能有<span> 'Server' </span>值。<span> <br>0121 </span>对象标记中的范围无效。对象实例<span> '|' </span>的作用范围不能是<span> Application </span>或<span> Session</span>。要创建有<span> Session </span>或<span> Application </span>作用范围的对象实例，请将在<span> Global.asa </span>文件中加入<span> Object </span>标记。<span> <br>0122 </span>对象标记中的范围无效。对象实例<span> '|' </span>必须有<span> Application </span>或<span> Session </span>作用范围。这将应用于所有在<span> Global.asa </span>文件内创建的对象。<span> <br>0123 </span>缺少<span> Id </span>属性。缺少<span> Object </span>标记所需的<span> Id </span>属性。<span> <br>0124 Language </span>属性丢失。缺少<span> Object </span>标记所需的<span> Language </span>属性。<span> <br>0125 </span>属性结束标记丢失。<span>'|' </span>属性的值没有结束分隔符。<span> <br>0126 </span>未找到<span> Include </span>文件。未找到<span> Include </span>文件<span> '|'</span>。<span> <br>0127 HTML </span>注释的结束标记丢失。<span>HTML </span>注释或在服务器端的包含文件缺少结束标记<span> (--&gt;)</span>。<span> <br>0128 File </span>或<span> Virtual </span>属性丢失。<span>Include </span>文件名必须用<span> File </span>或<span> Virtual </span>属性指定。<span> <br>0129 </span>未知的脚本语言。服务器上找不到脚本语言<span> '|'</span>。<span> <br>0130 File </span>属性无效。<span>File </span>属性<span> '|' </span>不能以斜杠或反斜杠开始。<span> <br>0131 </span>不允许的父路径。<span>Include </span>文件<span> '|' </span>不能包含<span> '..' </span>来表示父目录。<span> <br>0132 </span>编译错误。无法处理<span> Active Server Page '|'</span>。<span> <br>0133 ClassID </span>属性无效。对象标记有一个无效的<span> ClassID '|'</span>。<span> <br>0134 ProgID </span>属性无效。对象有一个无效的<span> ProgID '|'</span>。<span> <br>0135 </span>循环包含。文件<span> '|' </span>包含它本身（可能是非直接地包含）。请检查包含文件中的其他<span> Include </span>语句。<span> <br>0136 </span>对象实例名无效。对象实例<span> '|' </span>试图使用一个保留名称。这个名称被<span> Active Server Pages </span>的内部对象使用。<span> <br>0137 </span>全局脚本无效。脚本块必须是允许的<span> Global.asa </span>过程之一。<span>Global.asa </span>文件中不允许在<span> &lt;% ... %&gt; </span>内使用脚本指令。允许的过程名称是<span> Application_OnStart</span>、<span>Application_OnEnd</span>、<span>Session_OnStart </span>或<span> Session_OnEnd</span>。<span> <br>0138 </span>脚本块嵌套。脚本块不可放在另一个脚本块内。 <span><br>0139 </span>嵌套对象。对象标记不能放在另一个对象标记内。<span> <br>0140 </span>页命令次序有误。<span>@ </span>命令必须是<span> Active Server Page </span>中的第一个命令。<span> <br>0141 </span>页命令重复。<span>@ </span>命令只可以在<span> Active Server Page </span>中使用一次。<span> <br>0142 </span>线程令牌错误。无法打开线程令牌。<span> <br>0143 </span>应用程序名无效。未找到有效的应用程序名称。<span> <br>0144 </span>初始化错误。初始化时页级别的对象列表失败。<span> <br>0145 </span>新应用程序失败。无法添加新的应用程序。<span> <br>0146 </span>新会话失败。无法添加新的会话。<span> <br>0147 500 </span>服务器错误。<span> <br>0148 </span>服务器太忙。<span> </span></span>
<p><span>0149 </span><span>正在重新启动应用程序。重启动应用程序期间无法处理请求。<span> <br>0150 </span>应用程序目录错误。无法打开应用程序目录。<span> <br>0151 </span>更改通知错误。无法创建更改通知事件。<span> <br>0152 </span>安全错误。处理用户安全凭据时发生错误。<span> <br>0153 </span>线程错误。新线程请求已失败。<span> <br>0154 HTTP </span>头写入错误。<span>HTTP </span>头无法写入客户端浏览器。<span> <br>0155 </span>页内容写入错误。页内容无法写入客户端浏览器。<span> <br>0156 </span>头错误。<span>HTTP </span>头已经写入到客户端浏览器。任何<span> HTTP </span>头必须在写入页内容之前修改。<span> <br>0157 </span>启用缓冲。缓冲启用后不能关闭。<span> <br>0158 URL </span>丢失。<span>URL </span>是必需的。<span> <br>0159 </span>缓冲已关闭。缓冲必须启用。<span> <br>0160 </span>日志记录错误。将条目写入日志失败。<span> <br>0161 </span>数据类型错误。将<span> Variant </span>转换为<span> String </span>变量失败。<span> <br>0162 </span>不能修改<span> Cookie</span>。不能修改<span> Cookie 'ASPSessionID'</span>。它是一个保留的<span> Cookie </span>名。<span> <br>0163 </span>逗号用法无效。日志条目内不可使用逗号。请选择另一个分隔符。<span> <br>0164 TimeOut </span>值无效。指定的<span> TimeOut </span>值无效。<span> <br>0165 SessionID </span>错误。无法创建<span> SessionID </span>字符串。<span> <br>0166 </span>对象未初始化。试图访问未初始化的对象。<span> <br>0167 </span>会话初始化错误。初始化<span> Session </span>对象时发生错误。<span> <br>0168 </span>禁止的对象使用。<span>Session </span>对象中不能保存内部对象。<span> <br>0169 </span>缺少对象信息。<span>Session </span>对象中不能保存信息不全的对象。需要对象的线程模型信息。<span> <br>0170 </span>删除会话错误。无法正确删除<span> Session</span>。<span> <br>0171 </span>路径丢失。必须为<span> MapPath </span>方法指定<span> Path </span>参数。<span> <br>0172 </span>路径无效。<span>MapPath </span>方法的路径必须是虚拟路径。使用了一个实际的路径。<span> <br>0173 </span>路径字符无效。<span>MapPath </span>方法的<span> Path </span>参数中指定了一个无效字符。<span> <br>0174 </span>多个路径字符无效。<span>MapPath </span>方法的<span> Path </span>参数中指定了无效的<span> '/' </span>或<span> '\\'</span>。<span> <br>0175 </span>不允许的路径字符。<span>MapPath </span>方法的<span> Path </span>参数中不允许使用<span> '..' </span>字符。<span> <br>0176 </span>未找到路径。<span>MapPath </span>方法的<span> Path </span>参数与已知路径不符。<span> <br>0177 Server.createObject </span>失败。<span>%s <br>0178 Server.createObject </span>访问错误。检查权限时调用<span> Server.createObject </span>失败。对此对象的访问被拒绝。<span> <br>0179 </span>应用程序初始化错误。初始化<span> Application </span>对象时发生错误。<span> <br>0180 </span>禁止的对象使用。<span>Application </span>对象中不能保存内部对象。<span> <br>0181 </span>线程模型无效。使用单元线程模型的对象不能存储在<span> Application </span>对象中。<span> <br>0182 </span>对象信息丢失。<span>Application </span>对象中不能保存信息不全的对象。需要此对象的线程模型信息。<span> <br>0183 </span>空<span> Cookie </span>项。不能保存空项<span> Cookie</span>。<span> <br>0184 Cookie </span>名称丢失。必须为<span> Cookie </span>指定名称。<span> <br>0185 </span>默认属性丢失。未找到对象的默认属性。<span> <br>0186 </span>证书分析错误。<span> </span></span>
<p><span>0187 </span><span>对象添加冲突。无法将对象添加到应用程序。应用程序被另一个要求添加对象的请求锁定。<span> <br>0188 </span>禁止的对象使用。无法将用对象标记创建的对象添加到会话内部。<span> <br>0189 </span>禁止的对象使用。无法将用对象标记创建的对象添加到应用程序内部。<span> <br>0190 </span>意外错误。释放外部对象时发生可捕获错误。<span> <br>0191 </span>意外错误。外部对象的<span> OnStartPage </span>方法中发生可捕获错误。<span> <br>0192 </span>意外错误。外部对象的<span> OnEndPage </span>方法中发生可捕获错误。<span> <br>0193 OnStartPage </span>失败。外部对象的<span> OnStartPage </span>方法中出错。<span> <br>0194 OnEndPage </span>失败。外部对象的<span> OnEndPage </span>方法中出错。<span> <br>0195 </span>无效的服务器方法调用。<span>Session_OnEnd </span>和<span> Application_OnEnd </span>期间不能调用<span> Server </span>对象的此方法。<span> <br>0196 </span>无法启动进程外组件。只能使用<span> InProc </span>服务器组件。若要使用<span> LocalServer </span>组件，必须设置<span> AspAllowOutOfProcComponents </span>配置数据库设置。请参阅帮助文件，了解重要注意事项。<span> <br>0197 </span>禁止的对象使用。不能将有单元模型行为的对象添加到应用程序内部对象。<span> <br>0198 </span>服务器正在关闭。不能处理请求。<span> <br>0199 </span>禁止的对象使用。不能将<span> JScript </span>对象添加到会话。<span> <br>0200 </span>超出<span> 'Expires' </span>属性范围。为<span> 'Expires' </span>指定的日期和时间在<span> 1980 </span>年<span> 1 </span>月<span> 1 </span>日之前或在<span> 2038 </span>年<span> 1 </span>月<span> 19 </span>日<span> 3:14:07 GMT </span>之后。<span> <br>0201 </span>默认脚本语言无效。为此应用程序指定的默认脚本语言无效。<span> <br>0202 </span>代码页丢失。代码页属性丢失。<span> <br>0203 </span>代码页无效。指定的代码页属性无效。<span> <br>0204 CodePage </span>值无效。指定的<span> CodePage </span>值无效。<span> <br>0205 </span>更改通知。创建更改通知事件失败。<span> <br>0206 </span>不能调用<span> BinaryRead</span>。使用<span> Request.Form </span>集合后不能调用<span> BinaryRead</span>。<span> <br>0207 </span>不能使用<span> Request.Form</span>。调用<span> BinaryRead </span>后不能使用<span> Request.Form </span>集合。<span> <br>0208 </span>不能使用通用<span> Request </span>集合。调用<span> BinaryRead </span>后不能使用通用<span> Request </span>集合。<span> <br>0209 TRANSACTION </span>属性的值非法。<span>TRANSACTION </span>属性只能是<span> REQUIRED</span>、<span>REQUIRES_NEW</span>、<span>SUPPORTED </span>或<span> NOT_SUPPORTED</span>。<span> <br>0210 </span>方法未实施。此方法尚未实施。<span> <br>0211 </span>对象超出范围。引用内置的<span> ASP </span>对象，此操作已不再有效。<span> <br>0212 </span>无法清除缓冲区。客户端调试启用时，<span>Response.Flush </span>之后不能有<span> Response.Clear</span>。<span> <br>0214 </span>路径参数无效。<span>Path </span>参数超出允许的最大长度。<span> <br>0215 ENABLESESSIONSTATE </span>属性的值非法。<span>ENABLESESSIONSTATE </span>属性的值只能是<span> TRUE </span>或<span> FALSE</span>。<span> <br>0216 MSDTC </span>服务未运行。如果未运行<span> MSDTC </span>服务，则不能运行事务性网页。<span> <br>0217 </span>对象标记中的范围无效。对象的作用范围必须是<span> Page</span>、<span>Session </span>或<span> Application</span>。<span> <br>0218 LCID </span>丢失。<span>LCID </span>属性丢失。<span> <br>0219 LCID </span>无效。指定的<span> LCID </span>不可用。<span> <br>0220 </span>不允许请求<span> GLOBAL.ASA</span>。不允许请求指向<span> GLOBAL.ASA </span>的<span> URL</span>。<span> <br>0221 @ </span>命令指令无效。指定的<span> '|' </span>选项未知或无效。<span> <br>0222 TypeLib </span>规范无效。<span>METADATA </span>标记包含无效的类型库规范。<span> <br>0223 </span>未找到<span> TypeLib</span>。<span>METADATA </span>标签含有的类型库规范和注册表项不符。<span> <br>0224 </span>无法加载 <span>TypeLib</span>。无法加载<span> METADATA </span>标记中指定的类型库。<span> <br>0225 </span>无法包装<span> TypeLib</span>。不能通过<span> METADATA </span>标记中指定的类型库创建类型库包装对象。<span> <br>0226 </span>无法修改<span> StaticObjects</span>。运行时无法修改<span> StaticObjects </span>集合。<span> <br>0227 Server.Execute </span>失败。调用<span> Server.Execute </span>失败。<span> <br>0228 Server.Execute </span>错误。加载此页时调用<span> Server.Execute </span>失败。<span> <br>0229 Server.Transfer </span>失败。调用<span> Server.Transfer </span>失败。<span> <br>0230 Server.Transfer </span>错误。加载此页时调用<span> Server.Transfer </span>失败。<span> <br>0231 Server.Execute </span>错误。使用的<span> URL </span>格式无效，或者使用了完全限定的绝对<span> URL</span>。请使用相对<span> URL</span>。<span> <br>0232 Cookie </span>规范无效。<span>METADATA </span>标记包含无效的<span> Cookie </span>规范。<span> <br>0233 </span>无法加载<span> Cookie </span>脚本源。无法加载<span> METADATA </span>标记中指定的<span> Cookie </span>脚本源文件。<span> <br>0234 </span>包含指令无效。脚本块中可能没有服务器端包含文件指令。请使用<span> &lt;SCRIPT&gt; </span>标签的<span> SRC= </span>属性。<span> <br>0235 Server.Transfer </span>错误。使用的<span> URL </span>格式无效，或者使用了完全限定的绝对<span> URL</span>。请使用相对<span> URL</span>。<span> <br>0236 Cookie </span>规范无效。<span>METADATA </span>标记包含无效的<span> SRC </span>参数或缺少该参数。<span> <br>0237 Cookie </span>规范无效。<span>METADATA </span>标记包含无效的<span> NAME </span>参数或缺少该参数。<span> <br>0238 </span>属性值丢失。没有为<span> '|' </span>属性指定值。<span> <br>0239 </span>无法处理文件。不支持<span> UNICODE ASP </span>文件。<span> <br>0240 </span>脚本引擎异常。<span>ScriptEngine </span>在<span> '%s' </span>中从<span> '%s' </span>引发<span> '%X' </span>异常。<span> <br>0241 createObject </span>异常。<span>'%s' </span>的<span> createObject </span>引发<span> %X </span>异常。<span> <br>0242 </span>查询<span> OnStartPage </span>接口异常。查询的<span> '%s' </span>对象的<span> OnStartPage </span>或<span> OnEndPage </span>方法引发<span> %X </span>异常。<span> <br>0243 Global.asa </span>中的<span> METADATA </span>标记无效。<span>Global.asa </span>中只能使用<span> METADATA TYPE="TypeLib"</span>。<span> <br>0244 </span>无法启用会话状态。应用程序中禁用会话时，无法启用会话状态。<span> <br>0245 </span>代码页值混合使用。指定的<span> @CODEPAGE </span>值与包含文件的<span> CODEPAGE </span>或文件的已保存格式的值不同。<span> <br>0246 </span>并发用户太多。请稍后再试<span>.. <br>0247 BinaryRead </span>的参数无效。<span>BinaryRead </span>的参数必须为非负值。<span> <br>0248 </span>未处理脚本。必须处理此<span> ASP </span>文件才能使用<span> ObjectContext </span>对象。<span> <br>0249 </span>无法在<span> Request </span>上使用<span> IStream</span>。使用<span> Request.Form </span>集合或<span> Request.BinaryRead </span>后无法在<span> Request </span>对象上使用<span> IStream</span>。<span> <br>0250 </span>默认代码页无效。为此应用程序指定的默认代码页无效。<span> <br>0251 </span>超出响应缓冲区限制。<span>ASP </span>页的执行引起响应缓冲区超出其配置限制。</span>
<p>&nbsp;
<p>&nbsp;
<p align=left><span>代码</span><span>=</span><span>描述</span>
<p align=left><span>200 </span><span>正常</span>
<p align=left><span>201 </span><span>已创建</span>
<p align=left><span>202 </span><span>已接受</span>
<p align=left><span>203 </span><span>非授权信息</span>
<p align=left><span>204 </span><span>无内容</span>
<p align=left><span>205 </span><span>重置内容</span>
<p align=left><span>206 </span><span>部分内容</span>
<p align=left><span>300 </span><span>多项选择</span>
<p align=left><span>301 </span><span>永久移动</span>
<p align=left><span>302 </span><span>已找到</span>
<p align=left><span>303 </span><span>查看其他</span>
<p align=left><span>304 </span><span>没有修改</span>
<p align=left><span>305 </span><span>使用代理</span>
<p align=left><span>307 </span><span>临时重定向</span>
<p align=left><span>400 </span><span>错误请求</span>
<p align=left><span>401 </span><span>未授权</span>
<p align=left><span>402 </span><span>需付费</span>
<p align=left><span>403 </span><span>禁止</span>
<p align=left><span>404 </span><span>未找到</span>
<p align=left><span>405 </span><span>不允许使用此方法</span>
<p align=left><span>406 </span><span>无法接受</span>
<p align=left><span>407 </span><span>需要代理服务器身份验证</span>
<p align=left><span>408 </span><span>请求超时</span>
<p align=left><span>409 </span><span>冲突</span>
<p align=left><span>410 </span><span>不存在</span>
<p align=left><span>411 </span><span>要求长度</span>
<p align=left><span>412 </span><span>不满足前提条件</span>
<p align=left><span>413 </span><span>请求实体太大</span>
<p align=left><span>414 </span><span>请求<span> - </span></span><span>URI </span><span>太大</span>
<p align=left><span>415 </span><span>不支持的媒体类型</span>
<p align=left><span>416 </span><span>无法满足所要求的范围</span>
<p align=left><span>417 </span><span>预期失败</span>
<p align=left><span>500 </span><span>内部服务器错误</span>
<p align=left><span>501 </span><span>未执行</span>
<p align=left><span>502 </span><span>网关无效</span>
<p align=left><span>503 </span><span>服务不可用</span>
<p align=left><span>504 </span><span>网关超时</span>
<p align=left><span>505 </span><span>不支持 </span><span>HTTP </span><span>版本</span></p>
<img src ="http://www.phpweblog.net/killjin/aggbug/2619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-29 02:07 <a href="http://www.phpweblog.net/killjin/archive/2007/12/29/2619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>http状态码一览表</title><link>http://www.phpweblog.net/killjin/archive/2007/12/28/2611.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Thu, 27 Dec 2007 17:36:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/28/2611.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2611.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/28/2611.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2611.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2611.html</trackback:ping><description><![CDATA[<p>1**：请求收到，继续处理<br>2**：操作成功收到，分析、接受<br>3**：完成此请求必须进一步处理<br>4**：请求包含一个错误语法或不能完成<br>5**：服务器执行一个完全有效请求失败</p>
<p>100——客户必须继续发出请求<br>101——客户要求服务器根据请求转换HTTP协议版本</p>
<p><font color=#006600>200——交易成功<br></font>201——提示知道新文件的URL<br>202——接受和处理、但处理未完成<br>203——返回信息不确定或不完整<br>204——请求收到，但返回信息为空<br>205——服务器完成了请求，用户代理必须复位当前已经浏览过的文件<br>206——服务器已经完成了部分用户的GET请求</p>
<p>300——请求的资源可在多处得到<br>301——删除请求数据<br><font color=#006600>302——在其他地址发现了请求数据<br></font>303——建议客户访问其他URL或访问方式<br>304——客户端已经执行了GET，但文件未变化<br>305——请求的资源必须从服务器指定的地址得到<br>306——前一版本HTTP中使用的代码，现行版本中不再使用<br>307——申明请求的资源临时性删除</p>
<p>400——错误请求，如语法错误<br>401——请求授权失败<br>402——保留有效ChargeTo头响应<br>403——请求不允许<br>404——没有发现文件、查询或URl<br>405——用户在Request-Line字段定义的方法不允许<br>406——根据用户发送的Accept拖，请求资源不可访问<br>407——类似401，用户必须首先在代理服务器上得到授权<br>408——客户端没有在用户指定的饿时间内完成请求<br>409——对当前资源状态，请求不能完成<br>410——服务器上不再有此资源且无进一步的参考地址<br>411——服务器拒绝用户定义的Content-Length属性请求<br>412——一个或多个请求头字段在当前请求中错误<br>413——请求的资源大于服务器允许的大小<br>414——请求的资源URL长于服务器允许的长度<br>415——请求资源不支持请求项目格式<br>416——请求中包含Range请求头字段，在当前请求资源范围内没有range指示值，请求<br>也不包含If-Range请求头字段<br>417——服务器不满足请求Expect头字段指定的期望值，如果是代理服务器，可能是下<br>一级服务器不能满足请求</p>
<p><font color=#ff0000>500——服务器产生内部错误<br></font>501——服务器不支持请求的函数<br>502——服务器暂时不可用，有时是为了防止发生系统过载<br>503——服务器过载或暂停维修<br>504——关口过载，服务器使用另一个关口或服务来响应用户，等待时间设定值较长<br>505——服务器不支持或拒绝支请求头中指定的HTTP版本</p>
<p>==========================================================</p>
<p>英文版：</p>
<p>100：Continue<br>101：Switching Protocols<br>102：Processing</p>
<p>200：OK<br>201：Created<br>202：Accepted<br>203：Non-Authoriative Information<br>204：No Content<br>205：Reset Content<br>206：Partial Content<br>207：Multi-Status</p>
<p>300：Multiple Choices<br>301：Moved Permanently<br>302：Found<br>303：See Other<br>304：Not Modified<br>305：Use Proxy<br>306：(Unused)<br>307：Temporary Redirect</p>
<p>400：Bad Request<br>401：Unauthorized<br>402：Payment Granted<br>403：Forbidden<br>404：File Not Found<br>405：Method Not Allowed<br>406：Not Acceptable<br>407：Proxy Authentication Required<br>408：Request Time-out<br>409：Conflict<br>410：Gone<br>411：Length Required<br>412：Precondition Failed<br>413：Request Entity Too Large<br>414：Request-URI Too Large<br>415：Unsupported Media Type<br>416：Requested range not satisfiable<br>417：Expectation Failed<br>422：Unprocessable Entity<br>423：Locked<br>424：Failed Dependency</p>
<p>500：Internal Server Error<br>501：Not Implemented<br>502：Bad Gateway<br>503：Service Unavailable<br>504：Gateway Timeout<br>505：HTTP Version Not Supported<br>507：Insufficient Storage</p>
<img src ="http://www.phpweblog.net/killjin/aggbug/2611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-28 01:36 <a href="http://www.phpweblog.net/killjin/archive/2007/12/28/2611.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络编辑基础：对HTTP协议的头信息详解</title><link>http://www.phpweblog.net/killjin/archive/2007/12/28/2610.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Thu, 27 Dec 2007 17:33:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/28/2610.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2610.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/28/2610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2610.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2610.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">HTTP（HyperTextTransferProtocol）是超文本传输协议的缩写，它用于传送WWW方式的数据，关于HTTP 协议的详细内容请参 考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求，请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应，相应的内容包括消息协议的版本，成功或者错误编码加上包含服务器信息、实体元信息以 及可能的实体内容。 <br><br>　　通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行，一个或者多个头域，一个只是头域结束的空行和可 选的消息体组成。HTTP的头域包括通用头，请求头，响应头和实体头四个部分。每个头域由一个域名，冒号（:）和域值三部分组成。域名是大小写无关的，域 值前可以添加任何数量的空格符，头域可以被扩展为多行，在每行开始处，使用至少一个空格或制表符。 <br><br><strong>　　通用头域 <br></strong><br>　　通用头 域包含请求和响应消息都支持的头域，通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩 展，如果存在不支持的通用头域，一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。 <br><br><br><strong>　　Cache-Control头域</strong> <br><br>　　Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached，响应消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如 下： <br><br>　　Public指示响应可被任何缓存区缓存。 <br><br>　　Private指示对于单个用户的整个或部分响应消息，不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息，此响应消息对于其他用户的请求无效。 <br><br>　　no-cache指示请求或响应消息不能缓存 <br><br>　　no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 <br><br>　　max-age指示客户机可以接收生存期不大于指定时间（以秒为单位）的响应。 <br><br>　　min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 <br><br>　　max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值，那么客户机可以接收超出超时期指定值之内的响应消息。 <br><br><br><strong>　　Date头域</strong> <br><br>　　Date头域表示消息发送的时间，时间的描述格式由rfc822定义。例如，Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时，换算成本地时间，需要知道用户所在的时区。 <br><br><strong>　　Pragma头域 <br></strong><br>　　Pragma头域用来包含实现特定的指令，最常用的是Pragma:no-cache。在HTTP/1.1协议中，它的含义和Cache- Control:no-cache相同。 <br><br><strong>　　请求消息</strong> <br><br>　　请求消息的第一行为下面的格式： <br><br>　　MethodSPRequest-URISPHTTP-VersionCRLFMethod 表示对于Request-URI完成的方法，这个字段是大小写敏感的，包括OPTIONS、GET、HEAD、POST、PUT、DELETE、 TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持，其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。 HEAD方法也是取回由Request-URI标识的信息，只是可以在响应时，不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息，可 以用于提交表单，向新闻组、BBS、邮件群组和数据库发送消息。 <br><br>　　SP表示空格。Request-URI遵循URI格式，在此字段为星 号（*）时，说明请求并不用于某个特定的资源地址，而是用于服务器本身。HTTP- Version表示支持的HTTP版本，例如为HTTP/1.1。CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加 信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持，如果存在不支持的请 求头域，一般将会作为实体头域处理。 <br><br><strong>　　典型的请求消息：</strong> <br><br>　　GET http://download.microtool.de:80/somedata.exe <br>　　Host: download.microtool.de <br>　　Accept:*/* <br>　　Pragma: no-cache <br>　　Cache-Control: no-cache <br>　　Referer: http://download.microtool.de/ <br>　　User-Agent:Mozilla/4.04[en](Win95;I;Nav) <br>　　Range:bytes=554554- <br><br>　　上例第一行表示HTTP客户端（可能是浏览器、下载程序）通过GET方法获得指定URL下的文件。棕色的部分表示请求头域的信息，绿色的部分表示通用头部分。 <br><br><strong>　　Host头域 <br></strong><br>　　Host头域指定请求资源的Intenet主机和端口号，必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域，否则系统会以400状态码返回。 <br><br><strong>　　Referer头域</strong> <br><br>　　Referer 头域允许客户端指定请求uri的源资源地址，这可以允许服务器生成回退链表，可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被 追踪。如果请求的uri没有自己的uri地址，Referer不能被发送。如果指定的是部分uri地址，则此地址应该是一个相对地址。 <br><br><strong>　　Range头域</strong> <br><br>　　Range头域可以请求实体的一个或者多个子范围。例如， <br>　　表示头500个字节：bytes=0-499 <br>　　表示第二个500字节：bytes=500-999 <br>　　表示最后500个字节：bytes=-500 <br>　　表示500字节以后的范围：bytes=500- <br>　　第一个和最后一个字节：bytes=0-0,-1 <br>　　同时指定几个范围：bytes=500-600,601-999 <br><br>　　但是服务器可以忽略此请求头，如果无条件GET包含Range请求头，响应会以状态码206（PartialContent）返回而不是以200 （OK）。 <br><br><strong>　　User-Agent头域</strong> <br><br>　　User-Agent头域的内容包含发出请求的用户信息。 <br><br><strong>　　响应消息</strong> <br><br>　　响应消息的第一行为下面的格式： <br><br>　　HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF <br><br>　　HTTP -Version表示支持的HTTP版本，例如为HTTP/1.1。Status- Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自 动识别，Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别，后两个数字没有分类的作用。第一个数字可 能取5个不同的值： <br><br>　　1xx:信息响应类，表示接收到请求并且继续处理 <br><br>　　2xx:处理成功响应类，表示动作被成功接收、理解和接受 <br><br>　　3xx:重定向响应类，为了完成指定的动作，必须接受进一步处理 <br><br>　　4xx:客户端错误，客户请求包含语法错误或者是不能正确执行 <br><br>　　5xx:服务端错误，服务器不能正确执行一个正确的请求 <br><br>　　响应头域允许服务器传递不能放在状态行的附加信息，这些域主要描述服务器的信息和 Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry- After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持，如果存在不支持的响应头 域，一般将会作为实体头域处理。 <br><br>　　典型的响应消息： <br><br>　　HTTP/1.0200OK <br>　　Date:Mon,31Dec200104:25:57GMT <br>　　Server:Apache/1.3.14(Unix) <br>　　Content-type:text/html <br>　　Last-modified:Tue,17Apr200106:46:28GMT <br>　　Etag:"a030f020ac7c01:1e9f" <br>　　Content-length:39725426 <br>　　Content-range:bytes554554-40279979/40279980 <br><br>　　上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息，绿色的部分表示通用头部分，红色的部分表示实体头域的信息。 <br><br><strong>　　Location响应头</strong> <br><br>　　Location响应头用于重定向接收者到一个新URI地址。 <br><br><strong>　　Server响应头</strong> <br><br>　　Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释，产品标识一般按照重要性排序。 <br><br><strong>　　实体</strong> <br><br>　　请求消息和响应消息都可以包含实体信息，实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息，实体头包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体 头，但是这些域可能无法未接受方识别。实体可以是一个经过编码的字节流，它的编码方式由Content-Encoding或Content-Type定 义，它的长度由Content-Length或Content-Range定义。 <br><br><strong>　　Content-Type实体头</strong> <br><br>　　Content-Type实体头用于向接收方指示实体的介质类型，指定HEAD方法送到接收方的实体介质类型，或GET方法发送的请求介质类型 Content-Range实体头 <br><br>　　Content-Range实体头用于指定整个实体中的一部分的插入位置，他也指示了整个实体的长度。在服务器向客户返回一个部分响应，它必须描述响应覆盖的范围和整个实体长度。一般格式： <br><br>　　Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth <br><br>　　例如，传送头500个字节次字段的形式：Content-Range:bytes0- 499/1234如果一个http消息包含此节（例如，对范围请求的响应或对一系列范围的重叠请求），Content-Range表示传送的范围， Content-Length表示实际传送的字节数。 <br><br><strong>　　Last-modified实体头</strong> <br>
<div id=art style="MARGIN: 15px" width="560">
<table cellSpacing=0 cellPadding=0 width=600 align=center border=1>
    <tbody>
        <tr>
            <td>应答头 </td>
            <td>说明 </td>
        </tr>
        <tr>
            <td>Allow </td>
            <td>服务器支持哪些请求方法（如GET、POST等）。</td>
        </tr>
        <tr>
            <td>Content-Encoding</td>
            <td>文 档的编码（Encode）方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的 下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩，但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此，Servlet应该通过查看Accept-Encoding头（即request.getHeader("Accept- Encoding")）检查浏览器是否支持gzip，为支持gzip的浏览器返回经gzip压缩的HTML页面，为其他浏览器返回普通页面。</td>
        </tr>
        <tr>
            <td>Content-Length </td>
            <td>表 示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势，可以把输出文档写入 ByteArrayOutputStram，完成后查看其大小，然后把该值放入Content-Length头，最后通过 byteArrayStream.writeTo(response.getOutputStream()发送内容。</td>
        </tr>
        <tr>
            <td>Content-Type</td>
            <td>表示后面的文档属于什么MIME类型。Servlet默认为text/plain，但通常需要显式地指定为text/html。由于经常要设置Content-Type，因此HttpServletResponse提供了一个专用的方法setContentTyep。 <br></td>
        </tr>
        <tr>
            <td>Date </td>
            <td>当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。 </td>
        </tr>
        <tr>
            <td>Expires </td>
            <td>应该在什么时候认为文档已经过期，从而不再缓存它？</td>
        </tr>
        <tr>
            <td>Last-Modified</td>
            <td>文 档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期，该请求将被视为一个条件GET，只有改动时间迟于指定时间的文档 才会返回，否则返回一个304（Not Modified）状态。Last-Modified也可用setDateHeader方法来设置。</td>
        </tr>
        <tr>
            <td>Location </td>
            <td>表示客户应当到哪里去提取文档。Location通常不是直接设置的，而是通过HttpServletResponse的sendRedirect方法，该方法同时设置状态代码为302。 </td>
        </tr>
        <tr>
            <td>Refresh</td>
            <td>表示浏览器应该在多少时间之后刷新文档，以秒计。除了刷新当前文档之外，你还可以通过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面。 <br>注 意这种功能通常是通过设置HTML页面HEAD区的＜META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path"＞实现，这是因为，自动刷新或重定向对于那些不能使用CGI或Servlet的 HTML编写者十分重要。但是，对于Servlet来说，直接设置Refresh头更加方便。 <br><br>注意Refresh的意义是&#8220;N秒之后 刷新本页面或访问指定页面&#8221;，而不是&#8220;每隔N秒刷新本页面或访问指定页面&#8221;。因此，连续刷新要求每次都发送一个Refresh头，而发送204状态代码则 可以阻止浏览器继续刷新，不管是使用Refresh头还是＜META HTTP-EQUIV="Refresh" ...＞。 <br><br>注意Refresh头不属于HTTP 1.1正式规范的一部分，而是一个扩展，但Netscape和IE都支持它。</td>
        </tr>
        <tr>
            <td>Server</td>
            <td>服务器名字。Servlet一般不设置这个值，而是由Web服务器自己设置。</td>
        </tr>
        <tr>
            <td>Set-Cookie </td>
            <td>设置和页面关联的Cookie。Servlet不应使用response.setHeader("Set-Cookie", ...)，而是应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。</td>
        </tr>
        <tr>
            <td>WWW-Authenticate</td>
            <td>客 户应该在Authorization头中提供什么类型的授权信息？在包含401（Unauthorized）状态行的应答中这个头是必需的。例如， response.setHeader("WWW-Authenticate", "BASIC realm=＼"executives＼"")。 <br>注意Servlet一般不进行这方面的处理，而是让Web服务器的专门机制来控制受密码保护页面的访问（例如.htaccess）。</td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.phpweblog.net/killjin/aggbug/2610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-28 01:33 <a href="http://www.phpweblog.net/killjin/archive/2007/12/28/2610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>