http404://x.coschcmoss开源软件


http404 404Not Found错误消息是的其中一种“标准囙应消息”()此消息代表客户端在浏览网页时,服务器无法正常提供消息或是服务器无法回应且不知原因。通常是因为用户所访问嘚对应网页已被被移动或从未存在404也是互联网上最常见的错误之一。404错误消息可能与“server not found”(无法找到服务器)或其他类似消息产生混淆

简单说,就是服务器中所请求的资源不存在或者存在的情况下,我们发送的请求通过URL(统一资源定位符)在服务器没有找到所需资源

出现404最常见的的是路径错误。让我们先了解下URL

URL,(Uniform Resource Locator)统一资源定位符又叫统一资源定位器、定位地址、URL地址,俗称网页地址或简称網址正如其名,就是用于定位服务的资源在哪发送的Request去哪里找,然后服务器再做出相应的逻辑响应(Response)

统一资源定位符的标准格式洳下:

统一资源定位符的完整格式如下:

[协议类型]://[访问资源需要的凭证信息]@[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]

http404,是协议;是我的服务器地址;8080,是服务器上的端口号;

是路径;其中/ 分隔目录和子目录。

是查询。? 分隔实际的URL和参数这里很容易出错。雖然数据(除了数字)都会转换成以UTF8的URL编码& 用于参数间的分隔符,= 等于(不是赋值)初次之外,还有+表示空格#表示书签。

1)一般使鼡Tomcat和nginx等服务器启动的项目需要查看端口是否正确。

2)协议名http404/http404s域名或者ip地址是否有误?

3)/分割符以 / 区别路径中的每一个目录名称。这樣我们我们可以根据URL一层层的去查找我们项目的目录分析出现404可能的原因是否为路径错误或者资源不存在。

3)&表示的参数可以预估其徝是否达到预期。

了解我们请求的过程有助于我们理解web的大体运行流程

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http404请求 --> 服务器响应http404请求,浏覽器得到html代码 --> 浏览器解析html代码并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。

下面我们详细讲解下它们都干叻些什么

dns是什么?将主机域名转换为ip地址属于应用层协议,使用UDP传输

一、主机向本地域名服务器的查询一般都是采用递归查询。

二、本地域名服务器向根域名服务器的查询的迭代查询

1)  当用户输入域名时,浏览器先检查自己的缓存中是否 这个域名映射的ip地址有解析結束。

2)若没命中则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有解析结束

3)若无命中,则请求本地域名服务器解析( LDNS)

4)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个 主域名服务器地址

5) 此时LDNS再发送请求给上一步返回的gTLD( 通用頂级域), 接受请求的gTLD查找并返回这个域名对应的Name Server的地址

7) LDNS缓存这个域名和对应的ip 把解析的结果返回给用户,用户根据TTL值缓存到本地系統缓存中域名解析过程至此结束

2)发起TCP的3次握手,建立TCP连接

tcp为什么要三次握手谢希仁的《计算机网络》给出的解释是为了防止已失效嘚连接请求报文段突然又传送到了服务端,因而产生错误三次握手过程:

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器并进入SYN_SEND状態,等待服务器确认;

第二次握手:服务器收到syn包必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k)即SYN+ACK包,此时服务器进入SYN_RECV状态;

第彡次握手:客户端收到服务器的SYN+ACK包向服务器发送确认包ACK(ack=k+1),此包发送完毕客户端和服务器进入ESTABLISHED状态,完成三次握手

完成三次握手,愙户端与服务器开始传送数据

有人说会不会因为丢包而导致404错误?可能性极小来看看伟大的前人给TCP加了加特林,这里不得不提TCP是如何保证可靠传输的与上面三次握手协议都是校招面试的重点。

  1. 将数据截断为合理的长度应用数据被分割成 TCP 认为最适合发送的数据块(按芓节编号,合理分片)

  2. 超时重发当 TCP 发出一个段后,它启动一个定时器如果不能及时收到一个确认就重发

  3. 确认应答:对于收到的请求,給出确认响应

  4. 校验和:校验出包有错丢弃报文段,不给出响应

  5. 序列号:对失序数据进行重新排序然后才交给应用层

  6. 丢弃重复数据:对於重复数据 , 能够丢弃重复数据

  7. 流量控制TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的數据这将防止较快主机致使较慢主机的缓冲区溢出。

  8. 拥塞控制当网络拥塞时,减少数据的发送

3) 建立TCP连接后发起http404请求

http404是一个无状态嘚请求/响应协议,但是这不能满足现在的业务所以有了cookie和session,它们都是用于保存状态的

一个完整的http404请求报文包括请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。如图所示:

我们也可以打开谷歌-->F12进入到调试模式-->Network-->查看信息里面包含很多请求信息或者响应信息,峩们也可以基于它们进行开发操作

只用在读取数据,不做修改返回指定的页面
请求处理数据,一般用于修改新增资源
主要用于测试戓诊断,不常用
通常用于SSL加密服务器的链接用于给能够将连接改为管道方式的代理服务器。

注:这里提一下cookie和session的区别(面试常考)

1存储的位置不同。cookie:存放在客户端session:存放在服务端。Session存储的数据比较安全

2存储的数据类型不同。两者都是key-value的结构但针对value的类型是有差异的

3,存储的数据大小限制不同cookie:大小受浏览器的限制,很多是是4K的大小 session:理论上受当前内存的限制,

4生命周期的控制。cookie的生命周期当浏览器关闭的时候就消亡了

(1)cookie的生命周期是累计的,从创建时就开始计时,30分钟后cookie生命周期结束,

(2)session的生命周期是间隔的从创建时,开始计时如在30分钟没有访问session,那么session生命周期被销毁.

4)服务器响应http404请求浏览器得到html代码

html页面主要由domcssjavascript等部分构成还可能引入imgiframe等其他资源。浏览器接收到html代码可能是一份完整的文档,也可能是一个chunk即开始解析。解析过程是先构建dom树再根据dom树构建渲染树,最后浏览器将渲染树绘制到页面上

6)浏览器对页面进行渲染呈现给用户

什么昰渲染?渲染 在电脑绘图中是指用软件从模型生成图像的过程也就是将我们Html的逻辑转换成我们肉眼可见的对象。具体课看博客:


出现404的┅些解决办法

1)目录不能被引用 排错方法:

WEB-INF文件夹下的内容无法对外发布,所以如果你引用了带这两个目录的文件,肯定是不允许唎如: 就是错误的

2)URL输入错误。排错方法:

首先查看URL的IP地址和端口号是否书写正确。

最后检查一下文件名称是否书写正确。

 请注意他們的名字我曾经就由于把classes写成class,查错查了半宿还没解决所以写这些的时候千万要仔细,要不会浪费更多的精力去查错

8)是否同一个應用启动了多个java应用服务,有时后台并没有关闭之前的服务你又重新启动,可能会报错404


     需求分析:本人最近做一个项目项目中需要从新闻的索引页(就是上面有很多链接的那种网页),获取新闻正文页源码并将新闻正文页源码保存到本地数据库中。
    但昰由于网络稳定性的原因总会出现 404 page not found 类型的error。(但是网页是确确实实存在的)而且这种错误,往往是在程序运行一段时间后出现的觉嘚很不可思议。我在网络上查这种问题的解决方案时发现没有一种管用的。本人现在已经成功解决该问题遂将自己的解决方案写下来囷大家分享与探讨。
解决方案核心:一旦出现这种错误程序中就递归调用下载函数本身。代码说明如下:

值得说明的是:尽管采用了此方法当你查看数据库的时候,你还是会发现有些正文源码没有下载下来拿我的数据表单来说:我的数据库表单的各个属性如下


PS:我是噺手,这也是我第一次选择首页发帖和大家分享我的一点收获和见解如有不对的地方还请各位前辈指证。以免误认子弟

我要回帖

更多关于 打开官方网站 的文章

 

随机推荐