电脑打开应用程序显示Application Authorization Error Hostnetwork is downn怎么解决

HTTP&Header&入门详解
什么是HTTP
HTTP是“Hypertext Transfer
Protocol”的所写,整个www都在使用这种协定,几乎你在流览器里看到的大部分内容都是通过http协定来传输的,比如这篇文章。
Headers是HTTP请求和相应的核心,它承载了关于用户端流览器,请求页面,伺服器等相关的资讯。
当你在流览器位址栏里键入一个url,你的流览器会将类似如下的http请求:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1 (Request line) Host: net.tutsplus.com User-Agent: Mozilla/5.0 (W U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/ Firefox/3.5.5 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/q=0.9,**;q=0.8 Accept-Language: en-us,q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://localhost/test.php Content-Type: application/x-www-form-urlencoded Content-Length: 43 first_name=John&last_name=Doe&action=Submit
这里有三个需要注意的地方:
第一行的路径已经变为简单的/foo.php ,
已经没了查询字串。
新增了Content-Type 和Content-Lenght
Header,它提供了发送资讯的相关资讯.
所有资料都在headers之后,以查询字串的形式被发送.
POST方式的请求也可用在AJAX,应用程式,cURL …
之上。并且所有的档上传表单都被要求使用POST方式。
HEAD&:接收Header资讯
HEAD和GET很相似,只不过HEAD不接受HTTP回应的内容部分。当你发送了一个HEAD请求,那就意味着你只对HTTPHeader感兴趣,而不是文档本身。
这个方法可以让流览器判断页面是否被修改过,从而控制缓存。也可判断所请求的文档是否存在。
例如,假如你的网站上有很多链结,那么你就可以简单的给他们分别发送HEAD请求来判断是否存在死链,这比使用GET要快很多。
http&回应结构
当流览器发送了HTTP请求之后,伺服器就会通过一个HTTP
response来回应这个请求。如果不关心内容,那么这个请求看起来会是这样的:
第一个有价值的资讯就是协定。目前伺服器都会使用HTTP/1.x
或者HTTP/1.1。
接下来一个简短的资讯代表状态。代码200意味着我们的请求已经发送成功了,伺服器将会返回给我们所请求的文档,在Header资讯之后。
我们都见过“404”页面。当我向伺服器请求一个不存在的路径时,伺服器就用用404来代替200回应我们。
余下的回应内容和HTTP请求相似。这些内容是关于伺服器软体的,页面/档何时被修改过,mime type
同样,这些Header资讯也是可选的。
HTTP&状态码
200 用来表示请求成功.
300 来表示重定向.
400 用来表示请求出现问题.
500 用来表示伺服器出现问题.
200&成功(OK)
前文已经提到,200是用来表示请求成功的。
206&部分内容(Partial
如果一个应用只请求某范围之内的档,那么就会返回206.
这通常被用来进行下载管理,中断点续传或者档分块下载。
404&没有找到(Not
很容易理解
401&未经授权(Unauthorized)
受密码保护的页面会返回这个状态。如果你没有输入正确的密码,那么你就会在流览器中看到如下的资讯:
注意这只是受密码保护页面,请求输入密码的弹出框是下面这个样子的:
403&被禁止(Forbidden)
如果你没有许可权访问某个页面,那么就会返回403状态。这种情况通常会发生在你试图打开一个没有index页面的档夹。如果伺服器设置不允许查看目录内容,那么你就会看到403错误。
其他一些方式也会发送许可权限制,例如你可以通过IP位址进行阻止,这需要一些htaccess的协助。
order allow,deny deny from 192.168.44.201 deny from 224.39.163.12 deny from 172.16.7.92 allow from all
302&(或307)临时移动(Moved
Temporarily)和301永久移动(Moved Permanently)
这两个状态会出现在流览器重定向时。例如,你使用了类似bit.ly
的网址缩短服务。这也是它们如何获知谁点击了他们链结的方法。
302和301对于流览器来说是非常相似的,但对于搜索引擎爬虫就有一些差别。打个比方,如果你的网站正在维护,那么你就会将用户端流览器用302重定向到另外一个位址。搜索引擎爬虫就会在将来重新索引你的页面。但是如果你使用了301重定向,这就等于你告诉了搜索引擎爬虫:你的网站已经永久的移动到了新的位址。
500&伺服器错误(Internal
Server Error)
这个代码通常会在页面脚本崩溃时出现。大部分CGI脚本都不会像PHP那样输出错误资讯给流览器。如果出现了致命的错误,它们只会发送一个500的状态码。这时需要查看伺服器错误日志来排错。
完整的列表
你可以找到完整的HTTP状态码说明。
Headers&中的HTTP请求
现在我们来看一些在HTTP
headers中常见的HTTP请求资讯。
所有这些Header资讯都可以在PHP的$_SERVER阵列中找到。你也可以用函数一次性获取所有的Header资讯。
一个HTTP请求会发送至一个特定的IP位址,但是大部分伺服器都有在同一IP位址下托管多个网站的能力,那么伺服器必须知道流览器请求的是哪个功能变数名称下的资源。
Host: rlog.cn
这只是基本的主机名,包含功能变数名称和子级功能变数名称。
在PHP中,可以通过$_SERVER['HTTP_HOST']
或$_SERVER['SERVER_NAME']来查看。
User-Agent
User-Agent: Mozilla/5.0 (W U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/ Firefox/3.5.5 (.NET CLR 3.5.30729)
这个Header可以携带如下几条资讯:
流览器名和版本号.
作业系统名和版本号.
这就是某些网站用来收集访客资讯的一般手段。例如,你可以判断访客是否在使用手机访问你的网站,然后决定是否将他们引导至一个在低解析度下表现良好的移动网站。
在PHP中,可以通过$_SERVER['HTTP_USER_AGENT']
来获取User-Agent
strstr ( $_SERVER [ 'HTTP_USER_AGENT' ] , 'MSIE 6' )
"Please stop using IE6!" ;
Accept-Language
Accept-Language:
en-us,q=0.5
这个资讯可以说明用户的默认语言设置。如果网站有不同的语言版本,那么就可以通过这个资讯来重定向用户的流览器。
它可以通过逗号分割来携带多国语言。第一个会是首选的语言,其他语言会携带一个“q”值,来表示用户对该语言的喜好程度(0~1)。
在PHP中用$_SERVER["HTTP_ACCEPT_LANGUAGE"]
来获取这一资讯。
( substr ( $_SERVER [ 'HTTP_ACCEPT_LANGUAGE' ] ,
header ( 'Location: http://french.mydomain.com' ) ;
Accept-Encoding
Accept-Encoding:
gzip,deflate
大部分的流览器都支援gzip压缩,并会把这一资讯报告给伺服器。这时伺服器就会压缩HTML发送给流览器。这可以减少近80%的档案大小,以节省下载时间和频宽。
在PHP中可以使用$_SERVER["HTTP_ACCEPT_ENCODING"]获取该资讯。然后调用方法时会自动检测该值,所以你无需手动检测。
// enables output
buffering&
// and all output is
compressed if the browser supports
ob_start('ob_gzhandler');
If-Modified-Since
如果一个页面已经在你的流览器中被cache,那么你下次流览时流览器将会检测文档是否被修改过,那么它就会发送这样的Header:
If-Modified-Since: Sat, 28
Nov :19 GMT
如果自从这个时间以来未被修改过,那么伺服器将会返回“304 Not
Modified”,而且不会再返回内容。流览器将自动去缓存中读取内容
在PHP中,可以用$_SERVER['HTTP_IF_MODIFIED_SINCE']
// assume $last_modify_time was the last the output was updated
// did the browser send If-Modified-Since header?
if ( isset ( $_SERVER [ 'HTTP_IF_MODIFIED_SINCE' ] ) )
// if the browser cache matches the modify time
( $last_modify_time
strtotime ( $_SERVER [ 'HTTP_IF_MODIFIED_SINCE' ] ) )
// send a 304 header, and no content
header ( "HTTP/1.1 304 Not Modified" ) ;
还有一个叫Etag的HTTP头资讯,它被用来确定缓存的资讯是否正确,稍后我们将会解释它。
顾名思义,他会送出流览器中存储的Cookie资讯给伺服器。
PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120; foo=bar
它是用分号分割的一组名值对。Cookie也可以包含session
在PHP中,单一的Cookie可以访问$_COOKIE阵列获得。你可以直接用$_SESSION
array获取session变数。如果你需要session
id,那么你可以使用session_id()函数代替cookie。
$_COOKIE [ 'foo' ] ;
// output: bar
$_COOKIE [ 'PHPSESSID' ] ;
// output: r2t5uvjq435r4q7ib3vtdjq120
session_start ( ) ;
session_id ( ) ;
// output: r2t5uvjq435r4q7ib3vtdjq120
顾名思义, Header将会包含referring
例如,我访问Nettuts+的主页并点击了一个链结,这个Header资讯将会发送到流览器:
http://net.tutsplus.com/
在PHP中,可以通过$_SERVER['HTTP_REFERER']
获取该值。
( isset ( $_SERVER [ 'HTTP_REFERER' ] ) )
parse_url ( $_SERVER [ 'HTTP_REFERER' ] ) ;
// is the surfer coming from Google?
( $url_info [ 'host' ]
'www .google.com' )
parse_str ( $url_info [ 'query' ] ,
"You searched on Google for this keyword: " .
$vars [ 'q' ] ;
// if the referring url was :
// http://www.google.com/search?source=ig&hl=en&rlz=&=&q=http+headers&aq=f&oq=&aqi=g-p1g9
/ / the output will be:
// You searched on Google for this keyword: http headers
You may have noticed the
word “referrer” is misspelled as “referer”. Unfortunately it made
into the official HTTP specifications like that and got
Authorization
当一个页面需要授权,流览器就会弹出一个登入视窗,输入正确的帐号后,流览器会发送一个HTTP请求,但此时会包含这样一个Header:
Authorization: Basic
bXl1c2VyOm15cGFzcw==
包含在Header的这部分资讯是base64
encoded。例如,base64_decode('bXl1c2VyOm15cGFzcw==')
会被转化为'myuser:mypass' 。
在PHP中,这个值可以用$_SERVER['PHP_AUTH_USER']
和$_SERVER['PHP_AUTH_PW'] 获得。
更多细节我们会在WWW-Authenticate部分讲解。
Headers&中的HTTP回应
现在让我了解一些常见的HTTP
Headers中的HTTP回应资讯。
在PHP中,你可以通过来设置Header回应资讯。PHP已经自动发送了一些必要的Header资讯,如载入的内容,设置cookies等等…你可以通过函数看到已发送和将要发送的Header资讯。你也可以使用函数来检查Header资讯是否已经被发送。
Cache-Control
w3.org 的定义是:“The
Cache-Control general-header field is used to specify directives
which MUST be obeyed by all caching mechanisms along the
request/response chain.” 其中“caching mechanisms”
包含一些你ISP可能会用到的闸道和代理资讯。
Cache-Control:
max-age=3600, public
“public”意味着这个回应可以被任何人cache,“max-age”
则表明了该cache有效的秒数。允许你的网站被cache降大大减少下载时间和带宽,同时也提高的流览器的载入速度。
也可以通过设置“no-cache”
指令来禁止缓存:
Cache-Control:
更多详情请参见。
Content-Type
这个Header包含了文档的”mime-type”。流览器将会依据该参数决定如何对文档进行解析。例如,一个html页面(或者有html输出的php页面)将会返回这样的东西:
Content-Type: text/
charset=UTF-8
是文档类型,'html'则是文档子类型。这个Header还包括了更多资讯,例如charset。
如果是一个图片,将会发送这样的回应:
Content-Type:
流览器可以通过mime-type来决定使用外部程式还是自身扩展来打开该文档。如下的例子降调用Adobe
Content-Type:
application/pdf
直接载入,Apache通常会自动判断文档的mime-type并且添加合适的资讯到Header去。并且大部分流览器都有一定程度的容错,在Header未提供或者错误提供该资讯的情况下它会去自动检测mime-type。
你可以在找到一个常用mime-type列表。
在PHP中你可以通过来检测档的ime-type。
Content-Disposition
这个Header资讯将告诉流览器打开一个档下载视窗,而不是试图解析该回应的内容。例如:
Content-Disposition:
filename=”download.zip”
他会导致流览器出现这样的对话方块:
注意,适合它的Content-Type头资讯同时也会被发送
Content-Type:
application/zip&
Content-Disposition:
filename=”download.zip”
Content-Length
当内容将要被传输到流览器时,伺服器可以通过该Header告知流览器将要传送档的大小(bytes)。
Content-Length:
对于档下载来说这个资讯相当的有用。这就是为什么流览器知道下载进度的原因。
例如,这里我写了一段虚拟脚本,来模拟一个慢速下载。
// it's a zip file
header ( 'Content-Type: application/zip' ) ;
// 1 million bytes (about 1megabyte)
header ( 'Content-Length: 1000000' ) ;
// load a download dialogue, and save it as download.zip
header ( 'Content-Disposition: filename="download.zip"' ) ;
// 1000 times 1000 bytes of data
str_repeat ( "." , 1000 ) ;
// sleep to slow down the download
usleep ( 50000 ) ;
结果将会是这样的:
现在,我将Content-LengthHeader注释掉:
// it's a zip file
header ( 'Content-Type: application/zip' ) ;
// the browser won't know the size
// header('Content-Length: 1000000');
// load a download dialogue, and save it as download.zip
header ( 'Content-Disposition: filename="download.zip"' ) ;
// 1000 times 1000 bytes of data
str_repeat ( "." , 1000 ) ;
// sleep to slow down the download
usleep ( 50000 ) ;
结果就变成了这样:
这个流览器只会告诉你已下载了多少,但不会告诉你总共需要下载多少。而且进度条也不会显示进度。
这是另一个为缓存而产生的Header资讯。它看起来会是这样:
“pub;gz”
伺服器可能会将该资讯和每个被发送档一起回应给流览器。该值可以包含文档的最后修改日期,档大小或者档校验和。流览会把它和所接收到的文档一起缓存。下一次当流览器再次请求同一档时将会发送如下的HTTP请求:
If-None-Match:
“pub;gz”
如果所请求的文档Etag值和它一致,伺服器将会发送304状态码,而不是200。并且不返回内容。流览器此时就会从缓存载入该档。
Last-Modified
顾名思义,这个Header资讯用GMT格式表明了文档的最后修改时间:
Last-Modified: Sat, 28 Nov
$modify_time =
filemtime($file);&
header(“Last-Modified: ” .
gmdate(“D, d MYH:i:s”, $modify_time) . ” GMT”);
它提供了另一种缓存机制。流览器可能会发送这样的请求:
If-Modified-Since: Sat, 28
Nov :19 GMT
在If-Modified-Since一节我们已经讨论过了。
这个Header是用来重定向的。如果回应代码为301 或者302
,伺服器就必须发送该Header。例如,当你访问http://www.nettuts.com
时流览器就会收到如下的回应:
HTTP/1.x 301 Moved
Permanently&
http://net.tutsplus.com/&
在PHP中你可以通过这种方式对访客重定向:
header('Location:
http://net.tutsplus.com/');
默认会发送302状态码,如果你想发送301,就这样写:
header('Location:
http://net.tutsplus.com/', true, 301);
Set-Cookie
当一个网站需要设置或者更新你流览的cookie资讯时,它就会使用这样的Header:
Set-Cookie: skin= path=/; domain=.amazon. expires=Sun, 29-Nov-:28 GMT Set-Cookie: session-id=120-5026; path=/; domain=.amazon. expires=Sat Feb 27 08:00:00 2010 GMT
每个cookie会作为单独的一条Header资讯。注意,通过js设置cookie将不会出现在HTTP头中。
在PHP中,你可以通过函数来设置cookie,PHP会发送合适的HTTP头。
setcookie(“TestCookie”,
“foobar”);
它会发送这样的头资讯:
Set-Cookie:
TestCookie=foobar
如果未指定到期时间,cookie就会在流览器关闭后被删除。
WWW-Authenticate
一个网站可能会通过HTTP发送这个Header资讯来验证用户。当流览器看到Header有这个回应时就会打开一个弹出窗。
WWW-Authenticate: Basic
realm=”Restricted Area”
它会看起来像这样:
在中就有一段简单的代码演示了如果用PHP做这样的事情:
( ! isset ( $_SERVER [ 'PHP_AUTH_USER' ] ) )
header ( 'WWW-Authenticate: Basic realm="My Realm"' ) ;
header ( 'HTTP/1.0 401 Unauthorized' ) ;
'Text to send if user hits Cancel button' ;
{$_SERVER['PHP_AUTH_USER']}.
entered {$_SERVER['PHP_AUTH_PW']} as your
Content-Encoding
这个Header通常会在返回内容被压缩时设置。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。一打开电脑就显示Application Error是什么问题?该如何处理_百度知道
一打开电脑就显示Application Error是什么问题?该如何处理
Exception EOleException in module KERNELBASE dll at ********(一串数字)
是什么意思?如果置之不理会有何后果?
我有更好的答案
Server Application Error The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance. 访问IIS客户端出现如上错信息提示, 在网上查了查解决方案如下: 1。右键我的电脑--管理--本地用户和组,给IUSR_机器名和IWAM_机器名两个用户设置密码,要一样。 2。开始--运行--打cmd, 然后cd D:InetpubAdminscripts(我的系统在D盘), 然后cscript.exe adsutil.vbs set w3svc/wamuserpass 你的密码, 然后cscript.exe adsutil.vbs set w3svc/anonymoususerpass 你的密码 看一下,行了没有?如果还不行,那么 cscript.exe synciwam.vbs -v, 然后iisreset。 据说就可以了,但是到最后一部提示8004e00f的错误,此错误是MSDTC服务不正常造成的,解决方法: 首先进入组件服务,查看组件服务/计算机/我的电脑/COM+应用程序,结果报错“COM+ 无法与 Microsoft 分布式事务协调程序交谈”,无法查看里面的对象。 2、进入事件查看器,发现msdtc服务没有正常启动。 3、删除注册表中的键: • HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSDTC • HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTC • HKEY_CLASSES_ROOTCID 4、停止MSDTC服务:net stop msdtc 5、卸载MSDTC服务:msdtc -uninstall 6、重新安装MSDTC服务:msdtc -install 7、确认在事件查看器中msdtc服务已经正常启动[这步很关键,如果没有,重新启动下电脑看看] 8、重新设置IIS的IWAM账号密码。[在计算机管理中的用户管理里] 9、同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:c:inetputadminscripts&adsutil set w3svc/wamuserpass &yourpassword& 10、同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:c:inetputadminscripts&cscript synciwam.vbs -v 到这部分网上大部分都说可以了,但是我这里虽然没有8004e00f的错误提示了,但是访问页面Server Application Error 错误依旧,最后终于找到了解决方法如下: 解决办法: [1]: 检查你的DTC服务(全名:Distributed Transaction Coordinator)是否可以正常启动, 如果正常的话请你跳过此步骤;如果出错,无法正常启动,请在开始菜单的运行中 运行:msdtc -resetlog 以创建日志文件。重起机器,检查IIS是否可以正常使用,若不行继续。 [2]: 在CMD下执行以下命令: cd %windir%\system32\inetsrv rundll32 wamreg.dll, CreateIISPackage regsvr32 asptxn.dll (到这里我就可以用了,不用重启的) OK,ASP页面一切正常了@!~~~^_^
采纳率:31%
为您推荐:
其他类似问题
打开电脑的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Hi. We've just changed hosts (as of Jan 2010), and will get the old kafka.com content up when time permits. All the best, Max

我要回帖

更多关于 up is down 的文章

 

随机推荐