精华内容
下载资源
问答
  • 英文好的可以阅读参考页面地址。...HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 - 未授权:授权被筛...

    英文好的可以阅读参考页面地址。

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307 

     

     

    HTTP 400 - 请求无效 

    HTTP 401.1 - 未授权:登录失败 

    HTTP 401.2 - 未授权:服务器配置问题导致登录失败 

    HTTP 401.3 - ACL 禁止访问资源 

    HTTP 401.4 - 未授权:授权被筛选器拒绝 

    HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败 

    HTTP 403 - 禁止访问 

    HTTP 403 - 对 Internet 服务管理器 的访问仅限于 Localhost 

    HTTP 403.1 禁止访问:禁止可执行访问 

    HTTP 403.2 - 禁止访问:禁止读访问 

    HTTP 403.3 - 禁止访问:禁止写访问 

    HTTP 403.4 - 禁止访问:要求 SSL 

    HTTP 403.5 - 禁止访问:要求 SSL 128 

    HTTP 403.6 - 禁止访问:IP 地址被拒绝 

    HTTP 403.7 - 禁止访问:要求客户证书 

    HTTP 403.8 - 禁止访问:禁止站点访问 

    HTTP 403.9 - 禁止访问:连接的用户过多 

    HTTP 403.10 - 禁止访问:配置无效 

    HTTP 403.11 - 禁止访问:密码更改 

    HTTP 403.12 - 禁止访问:映射器拒绝访问 

    HTTP 403.13 - 禁止访问:客户证书已被吊销 

    HTTP 403.15 - 禁止访问:客户访问许可过多 

    HTTP 403.16 - 禁止访问:客户证书不可信或者无效 

    HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效 HTTP 404.1 - 

    无法找到 Web 站点 

    HTTP 404- 无法找到文件 

    HTTP 405 - 资源被禁止 

    HTTP 406 - 无法接受 

    HTTP 407 - 要求代理身份验证 

    HTTP 410 - 永远不可用 

    HTTP 412 - 先决条件失败 

    HTTP 414 - 请求 - URI 太长 

    HTTP 500 - 内部服务器错误 

    HTTP 500.100 - 内部服务器错误 - ASP 错误 

    HTTP 500-11 服务器关闭 

    HTTP 500-12 应用程序重新启动 

    HTTP 500-13 - 服务器太忙 

    HTTP 500-14 - 应用程序无效 

    HTTP 500-15 - 不允许请求 global.asa 

    Error 501 - 未实现 

    HTTP 502 - 网关错误 

    用户试图通过 HTTP 或文件传输协议 (FTP) 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。该状态代码记录在 IIS 日志中,同时也可能在 Web 浏览器或 FTP 客户端显示。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。 

    日志文件的位置 

    在默认状 态下,IIS 把它的日志文件放在 %WINDIRSystem32Logfiles 文件夹中。每个万维网 (WWW) 站点和 FTP 站点在该目录下都有一个单独的目录。在默认状态下,每天都会在这些目录下创建日志文件,并用日期给日志文件命名(例如,exYYMMDD.log)。 

    HTTP 

    1xx - 信息提示 

    这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。 • 100 - 继续。 

    • 101 - 切换协议。 

    2xx - 成功 

    这类状态代码表明服务器成功地接受了客户端请求。 • 200 - 确定。客户端请求已成功。 

    • 201 - 已创建。 

    • 202 - 已接受。 

    • 203 - 非权威性信息。 

    • 204 - 无内容。 

    • 205 - 重置内容。 

    • 206 - 部分内容。 

    3xx - 重定向 

    客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。 • 302 - 对象已移动。 

    • 304 - 未修改。 

    • 307 - 临时重定向。 

    4xx - 客户端错误 

    发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。 • 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 所专用

    展开全文
  • 作为一个web开发工程师,我们平时都会和诸如200, 304, 404, 501等状态码打交道,那么它们是什么意思呢?今天,我们来聊聊~什么是HTTP状态码HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指...

    f89bd3ca628a3151bf989d443dc607ad.png

    作为一个web开发工程师,我们平时都会和诸如200, 304, 404, 501等状态码打交道,那么它们是什么意思呢?今天,我们来聊聊~

    什么是HTTP状态码

    HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指浏览器客户端)的3位数字代码

    这些状态码相当于浏览器和服务器之间的对话信息。它们相互沟通两者之间的事情是正常运行了还是运行失败了或者发生了一些其他的事情(如Continue)。了解状态码有助于你快速的诊断错误,减少网站的停机时间等等。

    状态码分类

    状态码共分为五类,以1-5数字开头进行标识,如下:

    • 1xxs - 信息性:服务器正在处理请求。
    • 2xxs - 成功信息:请求已经完成,服务器向浏览器提供了预期的响应。
    • 3xxs –重定向:你的请求被重定向到了其他地方。服务器收到了请求,但是有某种重定向。
    • 4xxs – 客户端错误:客户端发生错误,导致服务器无法处理请求。
    • 5xxs – 服务端错误:客户端发出了有效的请求,但是服务器未能正确处理请求。
    备注:3xxs类中的304是个奇葩,其不属于重定向信息提示,这个后面会讲到

    HTTP状态码大体的内容已经了解了,但是在具体的工作中,要用到具体的状态码,我们下面来展开说明下各自的一些状态码和工作中常用到的那些状态码

    1xxs状态码

    • 100 Continue:表明目前为止,所有的请求内容都是可行的,客户端应该继续请求,如果完成,则忽略它。
    • 101 Switching Protocol:该状态码是响应客户端Upgrade标头发送的,并且指示服务器也正在切换协议。
    • 103 Early Hints:主要用于与Link链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。
    备注:在web开发的工作中,我们都会使用封装好的库进行接口请求,而且浏览器的控制台网络中也不会出现这类状态码的提示(我没看到过 ),所以这一大类基本不会接触到,了解一下即可。

    2xxs状态码

    • 200 OK:请求成功。成功的含义取决于HTTP方法:
      • GET:资源已被提取并在消息正文中传输。
      • HEAD:实体标头位于消息正文中。
      • POST:描述动作结果的资源在消息体中传输。
      • TRACE:消息正文包含服务器收到的请求信息。(方法不安全,一般不用)

    说到了HTTP的方法,可以戳HTTP请求方法这个解析教程来了解一下。

    • 201 Created:请求已经成功,并因此创建了一个新的资源。这通常是在PUTPOST请求之后发送的响应。
    • 202 Accepted:请求已经接收到,但是没有响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。
    • 204 No Content:服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。遇到复杂请求时候,浏览器会发送一个OPTION方法进行预处理返回响应。

    关于复杂请求和简单请求,可以参考这篇文章CORS非简单请求。

    • 205 Reset Content:服务器已经成功处理了请求,但是没有返回任何内容。与204响应不同,返回此状态码的响应要求请求者重置文档视图。
    备注:使用的最多的2xxs状态码是200和204,在遇到204状态码的时候,要注意一下自己发的请求是不是复杂请求。如果是复杂请求,那么在得到204返回时,浏览器有没有接受了这个请求的返回,如果没有,要叫后端搞下相关配置了。

    3xxs状态码

    上文已经提到过,这一大类是提示重定向,可是有一个奇葩--304,它并不是表示重定向的信息提示,而是表示资源未被更改。至于为什么会被放在这个分类里面,真不知道~(看官知道的话补充下啦)

    • 301 Moved Permanently:被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用响应返回的若干个URI之一。
    • 302 Found(Previously "Moved temporarily"):请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-ControlExpires中进行了指定的情况下,这个响应才是可缓存的。
    • 303 See Other:对当前的请求的响应可以在另一个URI上被找到,而且客户端应该采用GET的方式访问那个链接。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。
    • 304 Not Modified:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。请求的时候一般结合If-Modified-Since头部使用。
    • 307 Temporary Redirect:307的意义如上302。与历史上302不同的是在重新发出原始请求时不允许更改请求方法。比如,使用POST请求始终就该用POST请求。
    备注:307和303已经替代了历史上的302状态码,现在看到的临时重定向的状态码是307。详细内容可到维基百科上查看。

    4xxs状态码

    • 401 Unauthorized:这意味着你的登录凭证无效。服务器不知道你是谁,这时,你需要尝试重新登录。
    • 403 Forbidden:服务器已经理解请求,但是拒绝执行它。与401不同,403知道是你登录了,但是还是拒绝了你。
    • 404 Not Found:请求失败,你请求所希望得到的资源未在服务器上发现。
    • 410 Gone:被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
    • 422 Unprocessable Entity:请求格式良好,但是由于语义错误而无妨遵循。这时候要检查下自己的传参格式语义有没有正确了。
    • 429 Too Many Requests:用户在给定的时间内发送了太多请求(“限制请求速率”)。在DDOS攻击中就可以使用到了。
    备注:这里要注意的是422,别请求链接一出错,就屁颠屁颠的找后端,先看下后端给过来的API文档中,要传的字段是否都准确跟上了。

    5xxs状态码

    • 500 Internal Server Error:服务器内部错误,服务器遇到了不知道如何处理的情况。比如后端同学写错了model啥的~
    • 503 Service Unavailable:服务器没有准备好处理请求。常见的原因是服务器因维护或重载而停机。
    • 504 Gateway Timeout:网关超时,服务器未能快速的做出反应。请求接口返回pedding时间过长基本就是这个问题了,囧。
    备注:遇到这类的问题,去问后端同学吧。语气好点啦,毕竟大家都是为了生活

    后绪

    以上就是今天整理的内容。嗯~,对了,各个浏览器对此的支持度very good。更加详细内容啥的,可以直接戳我下面的参考。在日常的web工作中,明白HTTP状态码是一个必备的活,起码在出错的时候,知道浏览器和服务器的交流障碍在哪里啦~

    参考

    • HTTP Status Codes
    • HTTP Explained: The HTTP Request Status Code Guide (Complete)
    • HTTP 响应代码

    备注

    • 文章首发:https://github.com/reng99/blogs/issues/23
    • 同步掘金:https://juejin.im/post/5cdbf1c05188251b9e0e2b90
    • 更多内容:https://github.com/reng99/blogs
    展开全文
  • 小结HTTP状态码

    2019-05-15 11:07:42
    作为一个web开发工程师,我们平时都会和诸如200, 304, 404, 501等状态码打交道,那么它们是什么意思呢?今天,我们来聊聊~ 什么是HTTP状态码 HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指...

    作为一个web开发工程师,我们平时都会和诸如200, 304, 404, 501等状态码打交道,那么它们是什么意思呢?今天,我们来聊聊~

    什么是HTTP状态码

    HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指浏览器客户端)的3位数字代码

    这些状态码相当于浏览器和服务器之间的对话信息。它们相互沟通两者之间的事情是正常运行了还是运行失败了或者发生了一些其他的事情(如Continue)。了解状态码有助于你快速的诊断错误,减少网站的停机时间等等。

    状态码分类

    状态码共分为五类,以1-5数字开头进行标识,如下:

    • 1xxs - 信息性:服务器正在处理请求。
    • 2xxs - 成功信息:请求已经完成,服务器向浏览器提供了预期的响应。
    • 3xxs –重定向:你的请求被重定向到了其他地方。服务器收到了请求,但是有某种重定向。
    • 4xxs – 客户端错误:客户端发生错误,导致服务器无法处理请求。
    • 5xxs – 服务端错误:客户端发出了有效的请求,但是服务器未能正确处理请求。

    备注:3xxs类中的304是个奇葩,其不属于重定向信息提示,这个后面会讲到

    HTTP状态码大体的内容已经了解了,但是在具体的工作中,要用到具体的状态码,我们下面来展开说明下各自的一些状态码和工作中常用到的那些状态码?

    1xxs状态码

    • 100 Continue:表明目前为止,所有的请求内容都是可行的,客户端应该继续请求,如果完成,则忽略它。
    • 101 Switching Protocol:该状态码是响应客户端Upgrade标头发送的,并且指示服务器也正在切换协议。
    • 103 Early Hints:主要用于与Link链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。

    备注:在web开发的工作中,我们都会使用封装好的库进行接口请求,而且浏览器的控制台网络中也不会出现这类状态码的提示(我没看到过?),所以这一大类基本不会接触到,了解一下即可。

    2xxs状态码

    • 200 OK:请求成功。成功的含义取决于HTTP方法:
      • GET:资源已被提取并在消息正文中传输。
      • HEAD:实体标头位于消息正文中。
      • POST:描述动作结果的资源在消息体中传输。
      • TRACE:消息正文包含服务器收到的请求信息。(方法不安全,一般不用)

    说到了HTTP的方法,可以戳HTTP请求方法这个解析教程来了解一下。

    • 201 Created:请求已经成功,并因此创建了一个新的资源。这通常是在PUTPOST请求之后发送的响应。
    • 202 Accepted:请求已经接收到,但是没有响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。
    • 204 No Content:服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。遇到复杂请求时候,浏览器会发送一个OPTION方法进行预处理返回响应。

    关于复杂请求和简单请求,可以参考这篇文章CORS非简单请求

    • 205 Reset Content:服务器已经成功处理了请求,但是没有返回任何内容。与204响应不同,返回此状态码的响应要求请求者重置文档视图。

    备注:使用的最多的2xxs状态码是200和204,在遇到204状态码的时候,要注意一下自己发的请求是不是复杂请求。如果是复杂请求,那么在得到204返回时,浏览器有没有接受了这个请求的返回,如果没有,要叫后端搞下相关配置了。

    3xxs状态码

    上文已经提到过,这一大类是提示重定向,可是有一个奇葩--304,它并不是表示重定向的信息提示,而是表示资源未被更改。至于为什么会被放在这个分类里面,真不知道~(看官知道的话补充下啦)?

    • 301 Moved Permanently:被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用响应返回的若干个URI之一。
    • 302 Found(Previously "Moved temporarily"):请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-ControlExpires中进行了指定的情况下,这个响应才是可缓存的。
    • 303 See Other:对当前的请求的响应可以在另一个URI上被找到,而且客户端应该采用GET的方式访问那个链接。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。
    • 304 Not Modified:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。请求的时候一般结合If-Modified-Since头部使用。
    • 307 Temporary Redirect:307的意义如上302。与历史上302不同的是在重新发出原始请求时不允许更改请求方法。比如,使用POST请求始终就该用POST请求。

    备注:307和303已经替代了历史上的302状态码,现在看到的临时重定向的状态码是307。详细内容可到维基百科上查看。

    4xxs状态码

    • 401 Unauthorized:这意味着你的登录凭证无效。服务器不知道你是谁,这时,你需要尝试重新登录。
    • 403 Forbidden:服务器已经理解请求,但是拒绝执行它。与401不同,403知道是你登录了,但是还是拒绝了你。
    • 404 Not Found:请求失败,你请求所希望得到的资源未在服务器上发现。
    • 410 Gone:被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
    • 422 Unprocessable Entity:请求格式良好,但是由于语义错误而无妨遵循。这时候要检查下自己的传参格式语义有没有正确了。
    • 429 Too Many Requests:用户在给定的时间内发送了太多请求(“限制请求速率”)。在DDOS攻击中就可以使用到了。

    备注:这里要注意的是422,别请求链接一出错,就屁颠屁颠的找后端,先看下后端给过来的API文档中,要传的字段是否都准确跟上了。?

    5xxs状态码

    • 500 Internal Server Error:服务器内部错误,服务器遇到了不知道如何处理的情况。比如后端同学写错了model啥的~
    • 503 Service Unavailable:服务器没有准备好处理请求。常见的原因是服务器因维护或重载而停机。
    • 504 Gateway Timeout:网关超时,服务器未能快速的做出反应。请求接口返回pedding时间过长基本就是这个问题了,囧。

    备注:遇到这类的问题,去问后端同学吧。语气好点啦,毕竟大家都是为了生活?

    后绪

    以上就是今天整理的内容。嗯~,对了,各个浏览器对此的支持度very good。更加详细内容啥的,可以直接戳我下面的参考。在日常的web工作中,明白HTTP状态码是一个必备的活,起码在出错的时候,知道浏览器和服务器的交流障碍在哪里啦~

    参考

    备注

    转载于:https://juejin.im/post/5cdbf1c05188251b9e0e2b90

    展开全文
  • 我们经常说“404错误”,你知道他指的是什么意思么? 404其实是Http报头所包含的一个“状态码”,表明该Http请求失败。那么除此之外,还有哪些常用的状态码呢?这些状态码和SEO又有什么关系呢? 每次当用户...

    我们经常说“404错误”,你知道他指的是什么意思么?

    404其实是Http报头所包含的一个“状态码”,表明该Http请求失败。那么除此之外,还有哪些常用的状态码呢?这些状态码和SEO又有什么关系呢?


    每次当用户代理(可以理解为就是IE和Firefox)向Web站点请求一个URL地址,服务器都会给予回复,回复内容包括两部分:HTTP报头,和被请求的内容。但仅从浏览器上我们通常只能看到内容而看不到报头信息。所以,我们需要通过一些浏览器插件来观察他们。就我个人而言,IE我用WebDeveloper;FireFox我用Fiddler。有兴趣的朋友可以在网上自行下载,两个都是相当流行的。

    对SEO而言,我们需要了解的状态代码有:
    重定向:301和302
    被删除:404
    服务器错误:500

    我们依次讲解,首先将302。302在asp.net中有一个很常见的原型:Response.Redirect(),请看代码:
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Redirect(
    "~/target.aspx");
            
    //Server.Transfer("~/target.aspx");
        }

     

    source.aspx页面上一个Button,Click事件中代码为Response.Redirect(~/target.aspx),点击source.aspx页面Button,查看该页面对应的状态码,结果就是302。(如下图,我使用的是Web Development,不知道为什么enable log之后,就无法再转到target页面了?各位同学知道原因的请指点一二)

     

    但可以查看详细信息,可以发现302的影响,response指明了要转向的url。

     

    客户端/服务器之间往返的过程其实是这样的:

    1. 点击Button,产生回发,回发的目标页面仍然是source.aspx,所以请求仍由source.aspx页面进行处理,这样才能进入source.aspx页面的Click事件;
    2. Click事件中,Response.Redirect(~/target.aspx)所作的事情实际上就是:
        2.1 将回复中Http报头的状态码改成302;
        2.1 指明302指向的页面就是target.aspx;
    3. 浏览器(用户代理)收到回复的报头信息后,
        3.1 将URL地址栏的地址改成target.aspx;
        3.2 向target.aspx发出请求

    和Response.Redirect()同样著名的是Server.Transfer()。但使用Server.Transfer,你会发现,页面对应的状态码是200,且地址栏的url并不会发生改变,仍然是source.aspx!这是因为Server.Transfer是完全在服务器端进行跳转的。所以一种很流行但我觉得不那么正确的说法就是:应当使用Server.Transfer()而不是Response.Redirect()来提高性能。因为在得到Server.Transfer()性能提升的同时,你应该权衡:性能的提高,和由此产生的代价。很难直接给出一个答案,这需要依靠具体的情景来做判断。但我倾向于尽量不使用Server.Transfer(),因为:1. 性能提升不大,节约的其实就是报头信息的往返;2. 清晰的URL无论对于终端用户,还是开发调试,都有很重要的作用。
            
    好了,理解了302,301也就好办了。302意味着重定向是暂时的,而301则是永久的重定向。
    就SEO而言,为了延续链接价值排除重复内容 ,我们在以下几种情况下都可能会用到301:
    1. 域名更换;
    2. 多个域名间映射;如www.freeflying.com和www.freeflying.cn,两个域名其实指向的是同一个网站,这就会造成大量的重复内容,对网站的排名不利。
    3. 清除默认索引页的重复问题:比如我们输入www.freeflying.com/article/时,如果在IIS里进行了设定,将指向www.freeflying.com/article/Default.aspx
    4. 其他的“不同域名相同内容”的重复问题,典型的就是URL重写后,www.freeflying.com/article/321.html和www.freeflying.com/article.aspx?id=321指向的其实都是同一个网页内容。

    对于404,最直观的理解就是页面不存在。如果网站是纯静态的,这很好理解;但当网站做成动态之后,如www.freeflying.com/article/321.html(映射为www.freeflying.com/article.aspx?id=321),虽然id=321的文章已经被删除了,或者根本不存在,但article.aspx这个页面始终是存在的,所以HTTP报头的状态码不会是404,而是200,表示请求成功。
    我们假设一个网站有id=321/342/6739……的文章都被删除了,但蜘蛛并不知道,它仍然会进行抓取,结果它发现,这些不同的URL对应的居然全是同一个页面。它就会将其当做重复页面进行处理。

    500意味着程序内部出现异常,比如3/0,代码如下:
    复制代码

        
    protected void Button1_Click(object sender, EventArgs e)
        {
            
    int i, j;
            i 
    = 8;
            j 
    = 0;
            
    this.Label1.Text = (i / j).ToString();
        }
    复制代码

    如果搜索引擎接到一个500的状态码时,搜索引擎会理解程序只是出现了暂时性的错误,它会在之后继续抓取,查看问题是否已经解决,这并不会给网站带来太大的问题——只要你能够尽快恢复。但是,Asp.net自带的个custom error的web.config配置,会让我们在不经意间“失误”。理由和上面讲到的404变200类似,当转向自定义的error.aspx之后,蜘蛛得到的是成功链接error.aspx的200代码,所以蜘蛛会以为报错的originpage.aspx正常的显示内容就是error.aspx的内容。不同url参数的originpage.aspx会被蜘蛛认为是不同的url,所以蜘蛛会认为这些所有的url都重复了——后果是很严重的。

     

    好了,认识到问题的严重性之后,我们来看解决问题的办法,太简单了,呵呵

    复制代码
        protected void Page_Load(object sender, EventArgs e)
        {
            
    //如果你希望搜索引擎知道这个url将不再使用
            Response.StatusCode = 404;

            
    //如果你希望告诉搜索引擎这个url只是出现了暂时的故障
            Response.StatusCode = 500;

            
    //如果你想永久重定向该页面
            Response.StatusCode = 301;
            Response.RedirectLocation 
    = @"\website1\target.aspx";
        }
    复制代码


             IIS解决方案:

      你可以在IIS处设定404页面。
      但.net有这更好的做法,在web.config的system.web里面只需要加
      <customErrors defaultRedirect="404.aspx" mode="On">
      <error statusCode="404" redirect="404.aspx"/>
      </customErrors>      
      在asp.net3.5中可以这么写
      <customErrors defaultRedirect="404.aspx" redirectMode="ResponseRewrite" mode="On">
      <error statusCode="404" redirect="404.aspx"/>
      </customErrors>
      如果 RedirectMode 属性设置为 ResponseRedirect,则将用户重定向到该错误页面,并且原始 URL 更改为该错误页面的 URL。如果 RedirectMode 属性设置为 ResponseRewrite,则将用户定向到错误页面,并且不更改浏览器中的原始 URL。
      这样你就可以自定自己的错误页面啦。

    解决方案:

      你可以在IIS处设定404页面。

      但.net有这更好的做法,在web.config的system.web里面只需要加

      <customErrors defaultRedirect="404.aspx" mode="On">

      <error statusCode="404" redirect="404.aspx"/>

      </customErrors>      

      在asp.net3.5中可以这么写

      <customErrors defaultRedirect="404.aspx" redirectMode="ResponseRewrite" mode="On">

      <error statusCode="404" redirect="404.aspx"/>

      </customErrors>

      如果 RedirectMode 属性设置为 ResponseRedirect,则将用户重定向到该错误页面,并且原始 URL 更改为该错误页面的 URL。如果 RedirectMode 属性设置为 ResponseRewrite,则将用户定向到错误页面,并且不更改浏览器中的原始 URL。

      这样你就可以自定自己的错误页面啦。

    展开全文
  • 本系列目录 我们经常说“404错误”,你知道他指的是什么意思么? 404其实是Http报头所包含的一个“状态码”,表明该Http请求失败。那么除此之外,还有哪些常用的状态码呢?这些状态码和SEO又有什么关系呢?每次当...
  • 我们经常说“404错误”,你知道他指的是什么意思么?404其实是Http报头所包含的一个“状态码”,表明该Http请求失败。那么除此之外,还有哪些常用的状态码呢?这些状态码和SEO又有什么关系呢?每次当用户代理(可以...
  • 4.1.5 用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。 4.1.6 JAVA8的ConcurrentHashMap为什么放弃了分段锁,有...
  • 14.4.1认证成功与失败的应用流程 125 15. Servlet API集成 127 15.1 Servlet 2.5+集成 127 15.1.1 HttpServletRequest.getRemoteUser() 127 15.1.2 HttpServletRequest.getUserPrincipal() 127 15.1.3 ...
  • 感觉是这里出现问题,但并不知道到是什么意思 ![图片说明](https://img-ask.csdn.net/upload/201911/16/1573886445_32104.png) 查找网上解决方法 说这个报错的问题原因就是static变量的初始化失败导致 但...
  • 网络端口查询

    2014-09-10 13:24:36
    端口如果被其他程序占用就不能正常启动,比如有时启动时会提示WEB启动失败,其实就是80端口被占用了,而迅雷等下载软件恰恰就是占用了80端口,关掉就行了。但有时迅雷等都没有开也启动不了,那就是别的东西占用了,...
  • Nginx安装包

    2017-09-01 14:17:19
    再看看我们redis服务器,可以看到里面已经添加了一些数据,有些session是spring自己添加的,具体什么意思我也不是很清楚,但我们找一下,就可以找到我们刚刚添加的session。其中右上角的TIL是我们session剩余有效...
  • 意思是在这一步,我只上传这个缓存,我不会拉取该缓存 policy: push # 指定缓存的内容,在下面我缓存了 node_modules 这个文件夹,你还可以在下面继续添加文件或者文件夹 paths: - node...
  • 这行路由代码的意思想必大家都能猜到一二了:当以 GET 方法访问 <code>http://fuck.io:1024/home</code> 的时候,调用 HomeController 控制器中的 index 方法(函数)。同理,你可以...
  • 浏览器使用 GET 方法从服务器获取,对应的是 <code>ArticleController</code> 中的 <code>create()</code> 方法,下面我们手动新建这个方法: <pre><code>php public function create() { return...
  • 测试培训教材

    2014-04-01 12:10:48
    1、安装Windows Server 2003 Enterprise Edition、安装IIS邮件服务器 2、安装SQL Server 2000、打上补丁Sp4 安装好SQL Server 2000后注意启动SQLServer服务器 3、安装QC9.0 ...
  • 这行路由代码的意思想必大家都能猜到一二了:当以 GET 方法访问 <code>http://fuck.io:1024/home</code> 的时候,调用 HomeController 控制器中的 index 方法(函数)。同理,你可以...
  • 大概的意思有两点: a. ThreadLocal提供了一种访问某个变量的特殊方式:访问到的变量属于当前线程,即保证每个线程的变量不一样,而同一个线程在任何地方拿到的变量都是一致的,这就是所谓的线程隔离。 b. 如果要...
  • 那么这些测试代码分别是啥意思呢? 这里首先引入了断言库Should.js,然后引入了自己的代码,这里<code>it()函数定义了一个测试用例,通过Should.js提供的api,可以非常语义化的描述...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

web服务器失败什么意思