整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

出现网页错误时,404、502这些数字代表啥

源:科技日报

“机”本法则

平时,我们在浏览网页时偶尔会遇到写有502的报错页面,更多时候会出现404错误页面,那么它们到底是什么意思呢?

登录网页时这些步骤在后台运行

当我们在IE、搜狗、火狐等浏览器中访问一个网址(域名)的时候,首先要找到域名所对应服务器的IP地址,简单说就是先要找到所需的服务器在哪里。

得到服务器的IP地址后,我们电脑上的浏览器要向服务器发出想加载网页资源的请求,建立一个浏览器与服务器的连接。

接着,浏览器会发送网页链接请求,服务器收到请求后,进行相应的处理,比如说身份验证等。这一步的目的是,查看你有没有访问服务器内相应资源的权限。

以上步骤完成后,服务器会将资源发送给浏览器,这一步称为网页响应。在资源传输完成后,浏览器成功接收到来自服务器的资源时,电脑就会显示出我们想要查看的相应内容。

前面介绍的一系列动作都是在瞬间完成的,平时我们点击网页后,电脑后台进行的,便是“请求资源”和“网页响应”的过程。

当然,上述过程中可能会发生一些意外情况,比如用户身份验证失败、该用户失去访问资源的权限、服务器在处理过程中出现错误等。

所以,在网页响应中还要加入相应的状态码来告诉浏览器当前请求的处理状态,这就是我们在链接网页出错时所看到的404、502等状态码了。

404代表找不到查询网页

404和502都是一种表示页面出现错误的代码,也叫做页面状态码。那么,404和502到底是什么意思?它们又分别代表什么样的页面错误呢?

404代码的意思是“输入错误,找不到要查询的页面”,表示用户在浏览网页时,服务器无法提供正确的信息或是服务器因不明原因无法将信息发送给访问者。

其中,404的第一个4表示客户端出错,第二个0表示你把网址打错了,最后的那个4表示“Not Found”,即找不到网页。

科学家设计404页面的主要作用是提醒用户,网站可以打开但是想要访问的页面找不到了。简言之,当404页面出现时,此网页链接就成为了“死链接”。

那么,是什么原因导致404错误的发生呢?

导致这种错误发生的原因有3种可能,一是管理员将原始的网页数据更改,导致网页失效。

二是上传到网页的文件目录或文件名称被更改,导致原网页链接失效,另外文件被移动或被删除也可能导致原链接失效。

三是输入的网址有错误,不能链接到所需的文件。

对于404错误,还有一个比较奇葩的原因,据微软IE部门客服中心统计,接到“该页无法显示”的投诉中,大部分是用户上网的时候没有插网线或者没有连接WiFi导致的。现在的用户大多用的是WiFi网络,也有可能在信号很差时出现404错误。

502意味着内部网络拥堵

说完404错误,我们再来谈谈502错误是怎么导致的?

502代码表示内部网络故障或设置问题,即内部网络拥塞,可能是内部存在大量的数据调用或交互时,网页内容提供方的一个或两个服务器,由于性能缺陷或程序错误,无法正常运行,使得网页上的内容无法被传输到用户的浏览器上。这就是为什么网页提供方使用更高配置的设备后,502错误出现的次数会少一些的原因。

目前,网络上代理和缓存的使用日渐增加,我们在对网页内容进行申请时,处理我们访问网页请求的一连串电脑或服务器中,只要有一个环节出现差错,502的错误就会产生。

由此,我们可以推演抢票网站崩溃时的情形:当用户大量涌入购票网站时,抢票网站的数据库瞬间需要调用和读取大量数据,而内部网络的服务器无法一下子处理如此多的数据,最终引发了502错误。

这就需要互联网服务供应商(ISP)及Web服务器软件供应商联络,由他们去检查在其控制下的不同电脑与服务器之间的IP数据传输的流通状况。

对于502错误,我们普通用户无法对服务器进行设置,只能采取一些比较简单的方法处理。

例如在我们进行网页连接时,可以尝试多次刷新,但这是最基本的刷新,只是从本地的硬盘重新读取数据到我们的浏览器,不一定能够重新连接服务器。

如果简单的刷新没有效果,我们不妨关掉502页面,再重新登录网页。

这样恢复正常网页的可能性会更大,因为这种方法是从服务器进行刷新的,但是该方法操作的过程会比较慢。为了减少重新点击的时间,用户也可以用快捷键Ctrl+F5来进行服务器刷新。

由上可知,404和502的网页错误代码在本质上是有很大不同的,对于不同的网页错误,我们可以找到一些应对的小方法。

但是要想从根本上解决问题还是得从各个服务器进行改进,各网站服务商可以进一步优化各自的服务器,减少404和502的出现,让用户可以享受更好的浏览体验。

(来源:微信公众号“数字北京科学中心”)

VvvebJs是一个开源的网页拖拽自动生成的JavaScript库,你可以以简单拖拽的方式生成自己需要的网页样式,内置jquery和Bootstrap,你可以拖拽相关的组件进行网页的构建,非常的方便,而且可以实时修改代码,功能丰富,使用简单,界面友好,特别适合一些专注于展示的网页设计,需要的朋友不可错过!



Github地址

https://github.com/givanz/VvvebJs

相关特性

  • 1、组件和块/片段拖放。
  • 2、撤销/重做操作。
  • 3、一个或两个面板界面。
  • 4、文件管理器和组件层次结构导航添加新页面。
  • 5、实时代码编辑器。
  • 6、包含示例php脚本的图像上传。
  • 7、页面下载或导出html或保存页面在服务器上包含示例PHP脚本。
  • 8、组件/块列表搜索。
  • 9、Bootstrap 4组件等组件

默认情况下,编辑器附带Bootstrap 4和Widgets组件,可以使用任何类型的组件和输入进行扩展。

使用方式

如下代码:

<!-- jquery-->
<script src="js/jquery.min.js"></script>
<script src="js/jquery.hotkeys.js"></script>
<!-- bootstrap-->
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<!-- builder code-->
<script src="libs/builder/builder.js"></script>	
<!-- undo manager-->
<script src="libs/builder/undo.js"></script>	
<!-- inputs-->
<script src="libs/builder/inputs.js"></script>	
<!-- components-->
<script src="libs/builder/components-bootstrap4.js"></script>	
<script src="libs/builder/components-widgets.js"></script>	
<script>
$(document).ready(function() 
{
	Vvveb.Builder.init('demo/index.html', function() {
		//load code after page is loaded here
		Vvveb.Gui.init();
	});
});
</script>

要初始化编辑器,调用Vvveb.Builder.init。第一个参数是要加载以进行编辑的URL,它必须位于相同的子域中才能进行编辑。第二个参数是页面加载完成时调用的函数,默认情况下调用编辑器Gui.init();


  • 结构


Component Group是一个组件集合,例如Bootstrap 4组由Button和Grid等组件组成,该对象仅用于在编辑器左侧面板中对组件进行分组。例如,Widgets组件组只有两个组件视频和地图,并被定义为如下

Vvveb.ComponentsGroup['Widgets'] = ["widgets/googlemaps", "widgets/video"];

Component是一个对象,它提供可以在画布上放置的html以及在选择组件时可以编辑的属性,例如Video Component,具有Url和Target属性的html链接Component定义为:


Vvveb.Components.extend("_base", "html/link", {
 nodes: ["a"],
 name: "Link",
 properties: [{
 name: "Url",
 key: "href",
 htmlAttr: "href",
 inputtype: LinkInput
 }, {
 name: "Target",
 key: "target",
 htmlAttr: "target",
 inputtype: TextInput
 }]
});

在Component属性集合中使用Input对象来编辑属性,例如文本输入,选择,颜色,网格行等。例如,TextInput扩展Input对象并定义为:

var TextInput = $.extend({}, Input, {
 events: {
 "keyup": ['onChange', 'input'],
	 },
	setValue: function(value) {
		$('input', this.element).val(value);
	},
	
	init: function(data) {
		return this.render("textinput", data);
	},
 }
);

输入还需要一个在编辑器html(在editor.html中)定义为<script>标签的模板,其id为vvveb-input-inputname,例如对于文本输入为vvveb-input-textinput,定义:


<script id="vvveb-input-textinput" type="text/html">
	
	<div>
		<input name="{%=key%}" type="text" class="form-control"/>
	</div>
	
</script>

以上是借助浏览器翻译工具,对官网的文档进行简单的翻译,可能会有些不够准确的地方,感兴趣的小伙伴可以直接查看相关文档!

设计界面预览






总结

VvvebJs是一个非常强大的网页可视化生成构建工具,让不懂网页设计的小伙伴们也能够通过拖拽来生成美观大方的网页出来,让设计网页就像设计图片一样,VvvebJs特别适合展示型网页,甚至可以不需要代码就能完成一项复杂的网页设计,总体来说,VvvebJs是一个值得尝试的工具!

看网站源代码时发现,html的最顶部多出两行。网站是用php代码写的,出现这个问题,我以为是bom头的问题,于是用代码去除了bom头,但还是不行,最后没办法了,只能一个文件一个文件的试,最后终于发现了问题的所在。

效果如下图所示

问题原因

出现这个问题的原因是,在 PHP<?php ?>的结束符外,多了几个回车导致的。如下图所示

解释

php的结束符的作用是在写html和php模版时,区分哪些是php代码,哪些是html的,在结束符外的部分会被认定为是html代码,所有页面上多出了空格。

解决办法

1、删除掉结束符下的空格

2、在纯php页面中,不要写结束符。