HTTP状态码大全与解决方法
您没有足够的执行许可。例如,如果试图访问的 ASP 页所在的目录权限设为“无”,或者,试图执行的 CGI 脚本所在的目录权限为“只允许脚本”,将出现此错误信息。若要修改执行权限,请在 Microsoft 管理控制台 (MMC) 中右击目录,然后依次单击属性和目录选项卡,确保为试图访问的内容设置适当的执行权限。
您没有将试图执行的文件类型的脚本映射设置为识别所使用的谓词(例如,GET 或 POST)。若要验证这一点,请在 MMC 中右击目录,依次单击属性、目录选项卡和配置,然后验证相应文件类型的脚本映射是否设置为允许所使用的谓词。
403.2 - 读访问被禁止。验证是否已将IIS设置为允许对目录进行读访问。另外,如果您正在使用默认文件,请验证该文件是否存在。
403.3 - 写访问被禁止。验证IIS权限和NTFS限是否已设置以便向该目录授予写访问权。
403.4 - 要求 SSL.禁用要求安全通道选项,或使用 HTTPS 代替 HTTP 来访问该页面。
403.5 - 要求 SSL 128.禁用要求 128 位加密选项,或使用支持 128 位加密的浏览器以查看该页面。
403.6 - IP地址被拒绝。服务器配置拒绝访问您目前的IP地址。
403.7 - 要求客户端证书。您已把您的服务器配置为要求客户端身份验证证书,但您未安装有效的客户端证书。
403.8 - 站点访问被拒绝。您已为您用来访问服务器的域设置了域名限制。
403.9 - 用户数过多。与该服务器连接的用户数量超过了IIS设置的连接数。
403.12 - 拒绝访问映射表。您要访问的页面要求提供客户端证书,但映射到您的客户端证书的用户 ID 已被拒绝访问该文件。
404 - 未找到。发生此错误的原因是您试图访问的文件已被移走或删除。
500 - 内部服务器错误。造成500错误常见原因有:ASP语法出错、ACCESS数据库连接语句出错、文件引用与包含路径出错、使用了服务器不支持的组件如FSO等
500.12 - 服务器错误:Web 服务器上的应用程序正在重新启动。这表示您在 IIS 重新启动应用程序的过程中试图加载 ASP 页。刷新页面后,此信息即会消失。如果刷新页面后,此信息再次出现,可能是防病毒软件正在扫描 Global.asa 文件。
500-100.ASP - ASP 错误。如果试图加载的 ASP 页中含有错误代码,将出现此错误信息。若要获得更确切的错误信息,请禁用友好 HTTP 错误信息。默认情况下,只会在默认 Web 站点上启用此错误信息。
502 - 网关错误。如果试图运行的 CGI 脚本不返回有效的 HTTP 标头集,将出现此错误信息。
1、错误号401.1 - 未经授权:访问由于凭据无效被拒绝。由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。
解决方案:
(1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用:
控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。
(2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限,如果没有尝试用以下步骤赋予权限:
开始->程序->管理工具->本地安全策略->安全策略->本地策略->用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。
注意:一般自定义 IIS默认匿名访问帐号都属于组,为了安全,没有特殊需要,请遵循此规则。
2、错误号401.2 HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。原因:关闭了匿名身份验证。
解决方案:
运行inetmgr,打开站点属性->目录安全性->身份验证和访问控制->选中“启用匿名访问”,输入用户名,或者点击“浏览”选择合法的用户,并两次输入密码后确定。
3、错误号:401.3 HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
原因:IIS匿名用户一般属于Guests组,而我们一般把存放网站的硬盘的权限只分配给administrators组,这时候按照继承原则,网站文件夹也只有administrators组的成员才能访问,导致IIS匿名用户访问该文件的NTFS权限不足,从而导致页面无法访问。
100 - 表示已收到请求的一部分,正在继续发送余下部分。
101 - 切换协议。
2xx - 成功。服务器成功地接受了客户端请求:
200 - 确定。客户端请求已成功。
201 - 已创建。
202 - 已接受。
203 - 非权威性信息。
204 - 无内容。
205 - 重置内容。
206 - 部分内容。
300 - 针对收到请求,服务器可执行多种操作。
301 - 永久移动转移,请求的内容已永久移动其他新位置。
302 - 临时移动转移,请求的内容已临时移动新的位置。
304 - 未修改。自从上次请求后,请求的内容未修改过。
307 - 临时重定向。服务器目前从不同位置响应请求,但请求者应继续使用原有位置来进行以后的请求。
400 - 错误的请求。
401 - 访问被拒绝。IIS 定义了许多不同的 401 错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示:
401.1 - 登录失败。
401.2 - 服务器配置导致登录失败。
401.3 - 由于 ACL 对资源的限制而未获得授权。
401.4 - 筛选器授权失败。
401.5 - ISAPI/CGI 应用程序授权失败。
401.7 - 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
403 - 禁止访问:IIS 定义了许多不同的 403 错误,它们指明更为具体的错误原因:
403.1 - 执行访问被禁止。
403.2 - 读访问被禁止。
403.3 - 写访问被禁止。
403.4 - 要求 SSL。
403.5 - 要求 SSL 128。
403.6 - IP 地址被拒绝。
403.7 - 要求客户端证书。
403.8 - 站点访问被拒绝。
403.9 - 用户数过多。
403.10 - 配置无效。
403.11 - 密码更改。
403.12 - 拒绝访问映射表。
403.13 - 客户端证书被吊销。
403.14 - 拒绝目录列表。
403.15 - 超出客户端访问许可。
403.16 - 客户端证书不受信任或无效。
403.17 - 客户端证书已过期或尚未生效。
403.18 - 在当前的应用程序池中不能执行所请求的 URL.这个错误代码为 IIS 6.0 所专用。
403.19 - 不能为这个应用程序池中的客户端执行 CGI.这个错误代码为 IIS 6.0 所专用。
403.20 - Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
404 - 未找到请求的内容。
404.0 - 未找到文件或目录。
404.1 - 无法在所请求的端口上访问 Web站点。
404.2 - Web 服务扩展锁定策略阻止本请求。
404.3 - MIME 映射策略阻止本请求。
405 - 用来访问本页面的 HTTP 谓词不被允许(方法不被允许) 。
406 - 客户端浏览器不接受所请求页面的 MIME 类型。
407 - 要求进行代理身份验证。
412 - 前提条件失败。
413 - 请求实体太大。
414 - 请求 URI 太长。
415 - 不支持的媒体类型。
416 - 所请求的范围无法满足。
417 - 执行失败。
423 - 锁定的错误。
500 - 服务器内部错误。
500.12 - 应用程序正忙于在 Web 服务器上重新启动。
500.13 - Web 服务器太忙。
500.15 - 不允许直接请求 Global.asa。
500.16 - UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
500.18 - URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。
500.100 - 内部 ASP 错误。
501 - 服务器无法完成请求的功能。
502 - 服务器用作网关或代理服务器时收到了无效响应。
502.1 - CGI 应用程序超时。
502.2 - CGI 应用程序出错。
503 - 服务不可用。这个错误代码为 IIS 6.0 所专用。
504 - 网关超时。
505 - HTTP 版本不受支持。
常见的 HTTP 状态代码及其原因
200 - 成功。IIS 已成功处理发送的请求。
304 - 未修改。客户端请求的内容已在其缓存中,内容自缓存以来尚未被修改过。客户端使用内容的缓存副本,而不从服务器下载内容。
401.1 - 登录失败。登录不成功,可能因为用户名或密码访问无效。
401.3 - 服务列表对资源的限制而未获得授权。表示存在NTFS权限问题,或者对试图访问的文件具备相应的权限,也可能发生此错误。
403.1 - 执行访问被禁止。
$_SERVER['PHP_SELF']:当前正在执行脚本的文件名,与document root相关。
$_SERVER['argv']:传递给该脚本的参数。
$_SERVER['argc']:包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER['GATEWAY_INTERFACE']:服务器使用的CGI规范的版本,例如:“CGI/1.1”。
$_SERVER['SERVER_NAME']:当前运行脚本所在服务器主机的名称。
$_SERVER['SERVER_SOFTWARE']:服务器标识的字串,在响应请求时的头部中给出。
$_SERVER['SERVER_PROTOCOL']:请求页面时通信协议的名称和版本,例如:“HTTP/1.0”。
$_SERVER['REQUEST_METHOD']:访问页面时的请求方法,例如:“GET”、“HEAD”、“POST”、“PUT”。
$_SERVER['QUERY_STRING']:查询(query)的字符串。
$_SERVER['DOCUMENT_ROOT']:当前运行脚本所在的文档根目录,在服务器配置文件中定义。
$_SERVER['HTTP_ACCEPT']:当前请求的Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT_CHARSET']:当前请求的Accept-Charset: 头部的内容,例如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_ACCEPT_ENCODING']:当前请求的Accept-Encoding: 头部的内容,例如:“gzip”。
$_SERVER['HTTP_ACCEPT_LANGUAGE']:当前请求的Accept-Language: 头部的内容,例如:“en”。
$_SERVER['HTTP_CONNECTION']:当前请求的Connection: 头部的内容,例如:“Keep-Alive”。
$_SERVER['HTTP_HOST']:当前请求的Host: 头部的内容。
$_SERVER['HTTP_REFERER']:链接到当前页面的前一页面的URL地址。
$_SERVER['HTTP_USER_AGENT']:当前请求的User_Agent: 头部的内容。
$_SERVER['REMOTE_ADDR']:正在浏览当前页面用户的IP地址。
$_SERVER['REMOTE_HOST']:正在浏览当前页面用户的主机名。
$_SERVER['REMOTE_PORT']:用户连接到服务器时所使用的端口。
$_SERVER['SCRIPT_FILENAME']:当前执行脚本的绝对路径名。
$_SERVER['SERVER_ADMIN']:管理员信息。
$_SERVER['SERVER_PORT']:服务器所使用的端口。
$_SERVER['SERVER_SIGNATURE']:包含服务器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED']:当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME']:包含当前脚本的路径,这在页面需要指向自己时非常有用。
$_SERVER['REQUEST_URI']:访问此页面所需的URI,例如:“/index.html”。
$_SERVER['PHP_AUTH_USER']:当PHP运行在Apache模块方式下,并且正在使用HTTP认证功能,这个变量便是用户输入的用户名。
$_SERVER['PHP_AUTH_PW']:当PHP运行在Apache模块方式下,并且正在使用HTTP认证功能,这个变量便是用户输入的密码。
$_SERVER['AUTH_TYPE']:当PHP运行在Apache模块方式下,并且正在使用HTTP认证功能,这个变量便是认证的类型。
我们经常会采集其它网站上的内容,以前有讲过用fopen,filecontent,curl等函数实例,今天我们就来fsockopen来实现这种读取远程 服务器上的图片方法吧。
<?php
function getFileSize($url){
$url = parse_url($url);
if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1rn");
fputs($fp,"Host:$url[host]rnrn");
while(!feof($fp)){
$tmp = fgets($fp);
if(trim($tmp) == ''){
break;
}else if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){
return trim($arr[1]);
}
}
return null;
}else{
return null;
}
}
?>
调用方法很简单,代码如下:
<?php
echo getFileSize(http://www.111cn.net/banner/banner.gif/)
?>
preg_match_all -- 进行全局正则表达式匹配
说明
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。
搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。
flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义):
PREG_PATTERN_ORDER
对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。
例子:
<?php
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."n";
print $out[1][0].", ".$out[1][1]."n";
?>
本例将输出:
<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test
因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。
PREG_SET_ORDER
对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。
例子:
<?php
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."n";
print $out[1][0].", ".$out[1][1]."n";
?>
本例将输出:
<b>example: </b>, example:
<div align=left>this is a test</div>, this is a test
本例中,$matches[0] 是第一组匹配结果,$matches[0][0] 包含匹配整个模式的文本,$matches[0][1] 包含匹配第一个子模式的文本,以此类推。同样,$matches[1] 是第二组匹配结果,等等。
PREG_OFFSET_CAPTURE
如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。本标记自 PHP 4.3.0 起可用。
如果没有给出标记,则假定为 PREG_PATTERN_ORDER。
返回整个模式匹配的次数(可能为零),如果出错返回 FALSE。
例子 1. 从某文本中取得所有的电话号码:
<?php
preg_match_all ("/(? (d{3})? )? (?(1) [-s] ) d{3}-d{4}/x",
"Call 555-1212 or 1-800-555-1212", $phones);
?>
例子 2. 搜索匹配的 HTML 标记(greedy):
<?php
// 是一个逆向引用的例子,其在 PCRE 中的含义是
// 必须匹配正则表达式本身中第二组括号内的内容,本例中
// 就是 ([w]+)。因为字符串在双引号中,所以需要
// 多加一个反斜线。
$html = "<b>bold text</b><a href=howdy.html>click me</a>";
preg_match_all ("/(<([w]+)[^>]*>)(.*)(</>)/", $html, $matches);
for ($i=0; $i< count($matches[0]); $i++) {
echo "matched: ".$matches[0][$i]."n";
echo "part 1: ".$matches[1][$i]."n";
echo "part 2: ".$matches[3][$i]."n";
echo "part 3: ".$matches[4][$i]."nn";
}
?>
本例将输出:
matched: <b>bold text</b>
part 1: <b>
part 2: bold text
part 3: </b>
matched: <a href=howdy.html>click me</a>
part 1: <a href=howdy.html>
part 2: click me
part 3: </a>
php execel 导出xml 程序
<?php
class Excel_XML
{
private $header = "<?xml version="1.0" encoding="UTF-8"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">";
private $footer = "</Workbook>";
private $lines = array ();
private $worksheet_title = "Table1";
private function addRow ($array)
{
// initialize all cells for this row
$cells = "";
// foreach key -> write value into cells
foreach ($array as $k => $v):
$cells .= "<Cell><Data ss:Type="String">" . utf8_encode($v) . "</Data></Cell>n";
endforeach;
// transform $cells content into one row
$this->lines[] = "<Row>n" . $cells . "</Row>n";
}
public function addArray ($array)
{
// run through the array and add them into rows
foreach ($array as $k => $v):
$this->addRow ($v);
endforeach;
}
public function setWorksheetTitle ($title)
{
// strip out special chars first
$title = preg_replace ("/[|:|/|?|*|[|]]/", "", $title);
// now cut it to the allowed length
$title = substr ($title, 0, 31);
// set title
$this->worksheet_title = $title;
}
function generateXML ($filename)
{
// deliver header (as recommended in php manual)
header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header("Content-Disposition: inline; filename="" . $filename . ".xls"");
// print out document to the browser
// need to use stripslashes for the damn ">"
echo stripslashes ($this->header);
echo "n<Worksheet ss:Name="" . $this->worksheet_title . "">n<Table>n";
echo "<Column ss:Index="1" ss:AutoFitWidth="0" ss:Width="110"/>n";
echo implode ("n", $this->lines);
echo "</Table>n</Worksheet>n";
echo $this->footer;
}
}
?>
实例
<?php
// include the php-excel class
require (dirname (__FILE__) . "/class-excel-xml.inc.php");
// create a dummy array
$doc = array (
1 => array ("Oliver", "Peter", "Paul"),
array ("Marlene", "Lucy", "Lina")
);
// generate excel file
$xls = new Excel_XML;
$xls->addArray ( $doc );
$xls->generateXML ("mytest");
?>
相关文章
- 409错误是什么?http 409错误怎么解决呢?不少站长在遇到这个错误代码之后都一筹莫展,本次一聚教程网为大家带来了详细的说明,快来看看吧。 409错误是什么: HTTP 40...2017-01-22
- http 405错误是什么?http 405错误怎么解决?相信很多站长都在找这两个问题的答案,本次小编为大家带来了详细的教程,快来看看吧。 405错误是什么: HTTP 405错误是H...2017-01-22
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
- 403错误是HTTP状态码的一种,属于“请示错误”,表示服务器拒绝请求。如果在搜索引擎尝试抓取您网站上的有效网页时显示此状态代码,那么,这可能是您的服务器或主机拒绝搜索...2017-01-22
- 412错误是什么?412错误怎么解决?本次一聚教程网将为大家带来详细的介绍,帮助大家全面了解412错误的意思以及解决412错误的方法。 412错误是什么: HTTP 412错误,(Precond...2017-01-22
- 今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。一般是指客户端浏览器不接受所请求页面的 MIME 类型。 而MIME类型是在把输出...2017-01-22
- 407错误是什么?407错误怎么解决?不少站长都遇到过407错误,下面小编将告诉大家如何处理407错误。 407错误是什么: HTTP 407错误是HTTP协议状态码的一种,表示需要代...2017-01-22
- 410错误是HTTP协议状态码的一种,本次一聚教程网将为大家详细介绍HTTP 410错误是什么,以及410错误的解决办法。 410错误是什么: HTTP 410错误是HTTP协议状态码的...2017-01-22
- ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
intellij idea快速查看当前类中的所有方法(推荐)
这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02- 每当遇到http错误代码为400,代表客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误,那么HTTP 400错误怎么解决呢?请看下文介绍。 目前400错...2017-01-22
- 1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
js导出table数据到excel即导出为EXCEL文档的方法
复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13- 批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
- ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果̳...2017-07-06
- 本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08