精华内容
下载资源
问答
  • 怎么在浏览器发布东西
    2022-01-14 19:01:27

    从美国对华为实施禁令开始,我们发现很多科技核心技术都被垄断。比如,手机系统被谷歌垄断,光刻机被ASML垄断,就连很多人日常搜索都离不开的浏览器也被国外垄断了。

    难道大家用的360浏览器、搜狗浏览器、百度浏览器这些不都国产浏览器,吗?国产浏览器虽然琳琅满目,但绝大部分国产浏览器都缺少一项关键“技术”,即浏览器内核。

    美国垄断浏览器内核

    浏览器有一个非常核心的部分叫做内核,你可以把它的重要程度理解为手机之于处理器,内核的作用是负责对网页语法的解释和渲染网页。

    在国际市场上,有四大浏览器内核,都来自美国,分别是微软IE浏览器内核Trident、谷歌Chrome浏览器内核Blink、苹果Safari内核Webkit、火狐浏览器内核Gecko,而免费的开源网络浏览器Chromium的所有者和开发者,也是谷歌。

    而国内的浏览器,也大多基于以上内核开发:

    360 基于 IE + Chromium 双内核;

    搜狗基于 Trident(兼容模式)+Webkit(高速模式);

    世界之窗浏览器基于 Trident 内核;

    浏览器内核的不自主让国内浏览器市场一度被谷歌占据半壁江山。以桌面浏览器市场为例,据华经产业研究院发布的数据显示,2018年,我国桌面浏览器用户规模为6.61亿人,而谷歌chrome浏览器拿下超过一半的市场份额,2019年占比达到66.03%,和2017年相比,提高了约6个百分点。

    对于国产浏览器而言,没有浏览器内核技术就等于被“卡住了脖子”一样,别人说制裁就制裁,即使使用的是开源项目的技术也一样,当年谷歌收回华为安卓操作系统的全部使用权限,就是最好的例子。一旦美国企业对浏览器内核进行限制,就会像如今的国产芯片一样,这对于国内浏览器市场是极为不利的,为了不再次被“卡住脖子”,国产服务器内核必须提上日程。

    近日,有博主曝光称一位在华为浏览器团队工作的资深经理透露再过两年就可以用上更好的华为浏览器,并且配上了“如今浏览器的四大内核都是美国技术”的话语,同时还有近期华为举办的“华为浏览器MEET X沙龙·教育”简介长图。

     虽然没有明示华为打算自研浏览器内核的事情,但是博主的话里话外似乎都透露出相关的信息——华为打算做自研浏览器内核了。

    实际上在华为之前,国内市场曾出现过一款名为“红芯浏览器”的产品,其在产品介绍时强调“自主创新浏览器内核”,相关图片还暗自自己与西方浏览器并列。让国人一度以为即将打破浏览器内核被垄断的局面。

     与此同时,还完成了 2.5 亿的 C 轮融资。然而宣布完成融资的当天,红芯浏览器就被曝出套壳 Chromium 内核。红芯浏览器在各方的声讨之下,发布道歉声明,承认自己套壳。

    浏览器内核研发有多难?

    红芯浏览器套壳的原因很简单,因为自研浏览器内核需要巨大的人力成本、高昂的维护费用以及悠久的研发周期和技术积累等,开发难度非常大。

    以谷歌谷Chromium内核为例,其从开发立项的时候就使用了Apple发展出来的WebKit引擎,同时还使用了苹果Safari浏览器及Firefox浏览器的部分源代码。可以说是站在了巨人的肩膀上,而从第一个版本推出到真正被大多数用户认可也还是花了接近10年的时间,期间总投入超过了100亿美元。更是在最近一两年才基本解决了内存占用过高的问题。

    360 浏览器发表过一篇文章——《中国为什么没有自主研发的浏览器内核?》文中分析了“为什么没有自主研发的浏览器的”原因:

    1、我们国家发展晚,错过最佳发展时期

    2、成本太高,资金实力难以跟上

    3、大多服务器内核都是开源项目,可以站在巨人的肩膀上打开市场

    更多相关内容
  • 撰写浏览器演示 这是一个使用Kotlin / JS和原始编译器在浏览器中运行的Compose演示。 这里的API不能代表任何最终的东西(实际... 当前,这些工件没有任何地方发布,但是您可以使用将其包含其他项目中。 也可以看看
  • 开始使用到最新版本的东西,同时保持我们都知道和喜爱的像expect一样的 API。 编写测试应该非常简单并且不会引起任何烦恼。 这个库试图实现所有这些。 安装 Assume 是用客户端和服务器端 JavaScript 编写的,并使用 ...
  • 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的... 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:* 浏览器缓存 – 浏览器
    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。
    本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~
    1. 首先嘛,你得在浏览器里输入要网址:



    2. 浏览器查找域名的IP地址


    导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:
    * 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。
    * 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
    * 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
    * ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。
    * 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会 有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。

    DNS递归查找如下图所示:
    500pxAn_example_of_theoretical_DNS_recursion_svg.png


    DNS有一点令人担忧,这就是像wikipedia.org 或者 facebook.com这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈:
    * 循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。
    * 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。
    * 地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。
    * Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。

    大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。
    3. 浏览器给web服务器发送一个HTTP请求

    因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。
    所以,浏览器将把一下请求发送到Facebook所在的服务器
    GET HTTP://facebook.com/ HTTP/1.1
    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Host: facebook.com
    Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]

    GET 这个请求定义了要读取的URL: “HTTP://facebook.com/”。 浏览器自身定义 (User-Agent 头), 和它希望接受什么类型的相应 (Accept and Accept-Encoding 头). Connection头要求服务器为了后边的请求不要关闭TCP连接。
    请求中也包含浏览器存储的该域名的cookies。可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器
    用来看原始HTTP请求及其相应的工具很多。作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。这些软件在网站优 化时会帮上很大忙。
    除了获取请求,还有一种是发送请求,它常在提交表单用到。发送请求通过URL传递其参数(e.g.:HTTP://robozzle.com/puzzle.aspx?id=85)。发送请求在请求正文头之后发送其参数。

    像“HTTP://facebook.com/”中的斜杠是至关重要的。这种情况下,浏览器能安全的添加斜杠。而像“HTTP: //example.com/folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加 斜杠。这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手。
    4. facebook服务的永久重定向响应

    图中所示为Facebook服务器发回给浏览器的响应:
    HTTP/1.1 301 Moved Permanently
    Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
    pre-check=0
    Expires: Sat, 01 Jan 2000 00:00:00 GMT
    Location: HTTP://www.facebook.com/
    P3P: CP=”DSP LAW”
    Pragma: no-cache
    Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
    path=/; domain=.facebook.com; httponly
    Content-Type: text/html; charset=utf-8
    X-Cnection: close
    Date: Fri, 12 Feb 2010 05:09:51 GMT
    Content-Length: 0

    服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“HTTP://www.facebook.com/” 而非“HTTP://facebook.com/”。
    为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?这个问题有好多有意思的答案。
    其中一个原因跟搜索引擎排名有 关。你看,如果一个页面有两个地址,就像HTTP://www.igoro.com/ 和HTTP://igoro.com/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是 什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。
    还有一个是用不同的地址会造成缓存友好性变差。当一个页面有好几个名字时,它可能会在缓存里出现好几次。
    5. 浏览器跟踪重定向地址


    现在,浏览器知道了 “HTTP://www.facebook.com/”才是要访问的正确地址,所以它会发送另一个获取请求:
    GET HTTP://www.facebook.com/ HTTP/1.1
    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
    Accept-Language: en-US
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]
    Host: www.facebook.com

    头信息以之前请求中的意义相同。
    6. 服务器“处理”请求


    服务器接收到获取请求,然后处理并返回一个响应。
    这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站,何况像facebook那样访问量大的网站呢!
    * Web 服务器软件web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理就 是一个能够读懂请求并且能生成HTML来进行响应的程序(像ASP.NET,PHP,RUBY…)。
    举 个最简单的例子,需求处理可以以映射网站地址结构的文件层次存储。像HTTP://example.com/folder1/page1.aspx这个地 址会映射/httpdocs/folder1/page1.aspx这个文件。web服务器软件可以设置成为地址人工的对应请求处理,这样 page1.aspx的发布地址就可以是HTTP://example.com/folder1/page1* 请求处理请求处理阅读 请求及它的参数和cookies。它会读取也可能更新一些数据,并讲数据存储在服务器上。然后,需求处理会生成一个HTML响应。
    所 有动态网站都面临一个有意思的难点 -如何存储数据。小网站一半都会有一个SQL数据库来存储数据,存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上。解决方案有:sharding (基于主键值讲数据表分散到多个数据库中),复制,利用弱语义一致性的简化数据库。
    委托工作给批处理是一个廉价保持数据更新的技术。举例来讲,Fackbook得及时更新新闻feed,但数据支持下的“你可能认识的人”功能只需要每晚更新(作者猜测是这样的,改功能如何完善不得而知)。批处理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁。7. 服务器发回一个HTML响应


    图中为服务器生成并返回的响应:
    HTTP/1.1 200 OKCache-Control: private, no-store, no-cache, must-revalidate, post-check=0,pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTP3P: CP=”DSP LAW”Pragma: no-cacheContent-Encoding: gzipContent-Type: text/html; charset=utf-8X-Cnection: closeTransfer-Encoding: chunkedDate: Fri, 12 Feb 2010 09:05:55 GMT
    2b3Tn@[...]
    整个响应大小为35kB,其中大部分在整理后以blob类型传输。
    内容编码头告诉浏览器整个响应体用 gzip算法进行压缩。解压blob块后,你可以看到如下期望的HTML:
    HTTP://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>lang=”en” id=”facebook”>

    关于压缩,头信息说明了是否缓存这个页面,如果缓存的话如何去做,有什么cookies要去设置(前面这个响应里没有这点)和隐私信息等 等。
    请注意报头中把Content-type设置为“text/html”。报头让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下 载它。浏览器会根据报头信息决定如何解释该响应,不过同时也会考虑像URL扩展内容等其他因素。8. 浏览器开始显示HTML
    在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了:


    9. 浏览器发送获取嵌入在HTML中的对象


    在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。这时,浏览器会发送一个获取请求来重新获得这些文件。
    下面是几个我们访问facebook.com时需要重获取的几个URL:
    * 图片
    HTTP://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif
    HTTP://static.ak.fbcdn.net/rsrc.php/zBS5C/hash/7hwy7at6.gif
    * CSS 式样表
    HTTP://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css
    HTTP://static.ak.fbcdn.net/rsrc.php/zANE1/hash/cvtutcee.css
    * JavaScript 文件
    HTTP://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
    HTTP://static.ak.fbcdn.net/rsrc.php/z6R9L/hash/cq2lgbs8.js

    这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等…
    但不像动态页面那样,静态文件会允许浏览器对其进行缓存。有的文件可能会不需要与服务器通讯,而从缓存中直接读取。服务器的响应中包含了静态文件保存的期限信息,所以浏览器知道要把它们缓存多长时间。还有,每个响应都可能包含像版本号一样工作的ETag头(被请求变量的实体值),如果浏览器观察到文件的版本 ETag信息已经存在,就马上停止这个文件的传输。
    试着猜猜看“fbcdn.net”在地址中代表什么?聪明的答案是”Facebook内容分发网络”。Facebook利用内容分发网络 (CDN)分发像图片,CSS表和 JavaScript文件这些静态文件。所以,这些文件会在全球很多CDN的数据中心中留下备份。
    静态内容往往代表站点的带宽大小,也能通过CDN轻松的复制。通常网站会使用第三方的CDN。例如,Facebook的静态文件由最大的 CDN提供商Akamai来托管。
    举例来讲,当你试着ping static.ak.fbcdn.net的时候,可能会从某个akamai.net服务器上获得响应。有意思的是,当你同样再ping一次的时候,响应的 服务器可能就不一样,这说明幕后的负载平衡开始起作用了。10. 浏览器发送异步(AJAX)请求


    在Web 2.0伟大精神的指引下,页面显示完成后客户端仍与服务器端保持着联系。
    以 Facebook聊天功能为例,它会持续与服务器保持联系来及时更新你那些亮亮灰灰的好友状态。为了更新这些头像亮着的好友状态,在浏览器中执行的 JavaScript代码会给服务器发送异步请求。这个异步请求发送给特定的地址,它是一个按照程式构造的获取或发送请求。还是在Facebook这个例子中,客户端发送给HTTP://www.facebook.com/ajax/chat/buddy_list.php一个发布请求来获取你好友里哪个 在线的状态信息。
    提起这个模式,就必须要讲讲”AJAX”– “异步JavaScript 和 XML”,虽然服务器为什么用XML格式来进行响应也没有个一清二白的原因。再举个例子吧,对于异步请求,Facebook会返回一些 JavaScript的代码片段。
    除了其他,fiddler这个工具能够让你看到浏览器发送的异步请求。事实上,你不仅可以被动的做为这些请求的看客,还能主动出击修改和重 新发送它们。AJAX请求这么容易被蒙,可着实让那些计分的在线游戏开发者们郁闷的了。(当然,可别那样骗人家~)
    Facebook聊天功能提供了关于AJAX一个有意思的问题案例:把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议,所 以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。
    这些情况发生时长轮询是个减轻服务器负载挺有趣的技术。如果当被轮询时服务器没有新消息,它就不理这个客户端。而当尚未超时的情况下收到了 该客户的新消息,服务器就会找到未完成的请求,把新消息做为响应返回给客户端。总结一下
    希望看了本文,你能明白不同的网络模块是如何协同工作的
    本篇文章来源于 站长资讯网 原文链接:http://www.chinahtml.com/1007/127890385919293_2.html

     

     

     

     

    我们似乎每天都要做这样一件事情,打开一个浏览器,输入网址,回车,一个空白的页面顿时有了东西,它可能是百度之类的搜索页面,或是一个挤满了文字和图片的门户网站。从我们打开浏览器,到我们看到我们想看的内容,这过程究竟发生了什么?
    下面我们就从三个方面理解这个过程,一个是浏览器,二个是服务器,第三个是浏览器和服务器之间通信的协议。在理解这三方面之前我们必须先搞明白将这三方面联系起来的一个词:web。 

    1,world wide web 
    我们通常所说的web就是指world wide web。一般来讲,这一种通过浏览器来访问资源的技术。我们经常说的上网,应该大部都是指的是上万维网(web),但是我们经常将万维网和因特网(Internet)搞混。因特网是一种网络互连的技术,它更指的是物理层面上的互连,而万维网应该算是跑在因特网上的一种服务。
    我们通常通过浏览器还访问web,我们常见到的网页中包含超文本,图片,视频音频等各项内容。向我们提供这些资源的是一个一个的站点,通过互联网,这些站点相互连接起来。我们通过超链接从一个网页访问到另外一个网页,从一个站点到另外一个站点,所有的这一切组成一个庞大的网,这就是web。
    支持web的技术,首先是底层的网络,因为web就是建立在Internet之上,web的基本协议是HTTP协议,它跑在TCP上的协议之上,而TCP协议又需要IP协议的支持,IP协议又要由底层链路来支撑,所以我们可以从高到第看到这样一个协议栈 http->tcp->ip->连路层协议。要理解web到ip就已经足够了。
    我们可以想一想web上的资源有哪些? 首先是文本,后来添加了图片,到现在的各种音频视频资源,所有互联网上的资源都要通过一个叫做URI的东西还标记,当然了我们更常见是URL。现在也不必纠结于两者有何不同,URL就是URI的一个子集,URL给了我们资源的地址,所以我们能够找到它。
    现在看一个URL:这是一个图片的url。它是按照这样的语法来定义:scheme://domain:port/path?query_string#fragment_id.scheme就是协议,在浏览器里通常是http,例子中的是https是一种由HTTP和SSL/TLS组合起来的应用,用以提供加密通信和对网络服务器的身份验证(http://zh.wikipedia.org/zh/HTTPS )。然后就是域名,每个站点都至少有一个域名,上面例子上的域名部分是www.google.com.hk,这个域名也是分为三部分的,www是主机名,com.hk算是顶级域名,除了com还有cn,net等。域名后面是端口号默认为80,通常被省略,这是服务器端服务器软件侦听的端口,也是TCP里面一个端口号的值。然后就是path,资源在服务器上的路径。最后问号部分的客户端利用url传给服务器的一些参数值,通常值比较少,不太重要时这么做。
    2,协议
    (1)HTTP协议
    web里最重要的协议就是HTTP协议,对于经典的ISO七层网络模型来说, HTTP处于最高层--应用层。HTTP应用的模型是client/server模型。因此对应着两种HTTP消息类型,request和response。客户端向服务器发出请求,服务器向客户端发回请求。下面看一下两种类型消息的格式:



     
    下面分别进行解释。
    首先是HTTP Request Message
    请求行:请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。请求方法常见的有:GET POST HEAD PUT等。
    消息报头:在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。 POST请求的内容放在实体正文中。 
    HTTP Response Message
    状态行:最主要的一个字段是服务器响应代码。比如,200 OK ,400 Bad Request ,401 Unauthorized ,403 Forbidden ,404 Not Found ,500 Internal Server Error ,503 Server Unavailable
    消息报头:普通报头和实体报头与 请求报头的类似。有区别的在于响应包头,响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
    (这部分说的比较粗略,网上的资源比较多,可以参考这一篇:http://blog.csdn.net/gueter/article/details/1524447 和http://book.51cto.com/art/200902/109036.htm )
    下面是ethereal抓到的一个get报文,post报文和响应报文,可以大概看一下。
     
     
     
    (2)TCP协议
    HTTP协议基于TCP协议,也就是HTTP的所有内容将作为TCP的实体被封装到TCP报文里面。TCP协议是面向连接,可靠的传输机制。也就是说客户端在与服务器交互数据的过程中会有一个连接建立和释放的过程,看上面的Http头部字段可以看到相关的字段。TCP有强大的窗口机制能够适应发送方和接收方的发送接收能力,也能根据整个网络状况进行调整。
    (3)IP协议
    IP协议处于整个TCP/IP协议族的承上启下地位。我们知道因特网上主机是靠一个32位的ip地址来定位的,HTTP用的URL也算是地址,但是比较高级,IP协议是理解不了的,所以需要一个从URL到IP的转换,这个过程通过DNS(域名查询系统)协议完成。我们用的每一台电脑上都配置了DNS服务器的地址,如果没有配置那么你的网关默认充当了,当我们有一个URL想知道对应的IP时就需要向DNS服务器发送查询请求了,它会把查询的结果发回。
    2,浏览器
    在web的世界里最不能少的角色就是浏览器。前面我们说到HTTP协议,HTTP消息有两种,request和response。浏览器的主要工作就是发送http request报文和接收处理http response报文。没有看过浏览器的开源文档,但是我觉得一个软件只要完成下面几件事,基本上就可以称的上一个浏览器了。
    (1)能够根据用户的请求生成合适的HTTP REQUEST报文。比如用户在浏览器地址栏上输入地址进行访问,浏览器要能够生成HTTP GET报文,表单的发送生成POST报文等等。
    (2) 能够对各种的RESPONSE进行处理。
    (3)渲染Html文档,生成文档树,能够解释css,还要有个javascript引擎。
    (4)能够发起dns查询得到ip地址。
    浏览器是个非常复杂的软件,当然现在的浏览器对http协议的支持应该不是问题,它们主要纠结于html文档渲染部分,对于用户层出不穷的新需求,w3c层出不穷的新标准,浏览器的路应该才刚刚开始。 
    3, 服务器
    服务器有两个层级的概念,它可以是机器,它上面存着一个站点的所有东西,也可以是软件,安装在一个也叫做服务器的机器上,帮助这个机器分发用户想要的东西。 我对服务器研究不多,只是用过几次apache。所以只是简单的谈谈我的认识。
    服务器最基本的功能就是响应客户端的资源请求。服务器首先会侦听80端口,来了http请求,就根据请求进行处理,请求一个图片那就根据路径找到资源发回,请求静态html页面也是如此,如果请求的是像php这样的动态页面应该先调用php编译器(或是解释器吧)生成html代码,然后返回给客户端。当然还要解决的一个问题就是并行问题以应对大访问量。
    因为对这方面不太了解,只想到了这么多。

    先说到这里, 有了新的认识再写。


    来源:http://www.cnblogs.com/orchid/archive/2012/04/21/2461442.html

     

     

    来源:从输入网址到显示网页的全过程分析
    http://www.itmian4.com/forum.php?mod=viewthread&tid=1655&fromuid=1931

    展开全文
  • 工作中,我被迫一个空气密封的环境中工作,这是为了防止不需要的东西进入我们的网络,同时也要防止需要的东西离开我们的网络。而设置远程扩展是一件很麻烦的事情,因为不可能手动安装服务器。“ 图源Hacker News...

    整理 | 彭慧中 责编 | 屠敏
    出品 | CSDN(ID:CSDNnews)

    致力于为开发者提供更好工具的软件巨头微软,最近又为开发者带来了新的惊喜。

    7 月 7 日,微软重磅推出 Visual Studio Code Server 服务,这是一项在远程开发机器上运行的后端服务。用户可以将该服务安装在任何位置(本地开发机器、云 VM 等),然后使用 VS Code 网页版(vscode.dev)通过浏览器安全地连接到该远程计算机上进行开发,无需设置麻烦的 SSH 或 https 。

    在这里插入图片描述

    远程开发的过去、现在及未来

    2019 年,微软开发了一款扩展程序,通过这个扩展,开发者可以在本地使用 VS Code 实现远程开发,如在 WSL、Docker 容器以及通过 SSH 管理的远程物理机或虚拟机上“远程”开发应用程序。该远程开发扩展需要在远程的环境中安装服务器,以方便本地的 VS Code 与远程的源代码和运行时进行顺利交互。

    2020 年,微软通过 GitHub Codespaces 在远程开发方面又向前迈进了一步,它可以让用户在本地或在浏览器中使用 VS Code 在远程虚拟机上开发应用程序,该虚拟机在云中为用户托管和管理。

    事实上,VS Code 是一个多进程应用程序。从理论上来讲,输入代码的前端与后端服务,如:托管扩展、终端、调试等,分别应该在各自单独的进程中运行。

    而如今,“Visual Studio Code Server”让一切成为了可能,通过Visual Studio Code Server,用户能够将服务器安装在本地或云端的任何位置,并使用 VS Code for Web 在浏览器中远程安全访问,且无需设置任何 SSH 或 https。这意味着在完成最初的配置工作后,理论上就能够在任何位置,任何性能的电脑中,通过浏览器完成对项目的开发与修改,大大提升了工作的便捷性。(再也不用背电脑回去加班了)
    在这里插入图片描述

    图源Visual Studio Code官网

    在这里插入图片描述

    使用指南

    由于 Visual Studio Code Server 目前处于预览阶段,因此用户需要通过一个注册表来申请访问,在开始使用后的几周内,会有邮件通知,在那之后可依照如下步骤使用。

    以在 Windows Subsystem for Linux (WSL) 中设置 VS Code Server 为例,使用方法如下:

    1、将 VS Code Server 安装在远程机器上,在终端中运行以下命令:

    wget -O- https://aka.ms/install-vscode-server/setup.sh | sh
    

    2、通过在终端中运行以下命令来启动 VS Code Server:

    code-server
    

    3、用户的远程机器将通过安全隧道与 vscode.dev 通信,无论在哪个网络上,都允许用户从 vscode.dev 连接到计算机。用户将获得一个设备代码和 URL,并验证 GitHub 帐户。

    Please enter the code 7644-1186 on https://github.com/login/device
    

    4、如果是第一次启动 VS Code Server,系统将提示用户输入连接名称。

    What would you like to call this machine? (elegant-pitta)
    

    5、在验证并提供机器名称后,CLI 会启动服务器实例并生成 vscode.dev URL。接着,用户就可以在任意设备上打开此 URL 来写代码了。

    在这里插入图片描述

    用户体验

    微软的该服务一经推出,就引来不少开发者跃跃欲试。

    一些开发者对此赞不绝口:“这类服务超级有用!首先,我可以从家里的笔记本电脑连接到我的工作电脑(12 核),给家用笔记本提供了与工作电脑相同的速度。不仅如此,我也可以在火车上做同样的事情,并节省大量的电量。在我们公司,我们也通过 GitPod 给那些机器性能较差且很难找到强大的计算机部件的开发者使用。”

    在这里插入图片描述

    图源Hacker News

    同时,还有开发者表示:“这对那些有严格安全限制的公司来说是超级有用的。在工作中,我被迫在一个空气密封的环境中工作,这是为了防止不需要的东西进入我们的网络,同时也要防止需要的东西离开我们的网络。而设置远程扩展是一件很麻烦的事情,因为不可能手动安装服务器。“

    在这里插入图片描述

    图源Hacker News

    如果你也对 Visual Studio Code Server 感兴趣,何不立即尝试一下,并告诉我们你的感受呢?

    参考资料:https://code.visualstudio.com/blogs/2022/07/07/vscode-server


    新程序员001-004》已全面上市,欢迎扫描下方二维码或点击进入立即订阅,即可畅享电子书及精美纸质书
    在这里插入图片描述

    展开全文
  • 赶巧精易WEB浏览器发布了,让我看到了ajax 我想,能不能利用它来免去了cookie、以及滑动验证码带来的算法困扰 毕竟,我所有的提交依赖于当前的网页而已,把浏览器当成一个接收验证码的图片框 原来想实现自动滑块的,...
  • 我用的是我最近跟着B站学的一个web项目为例,讲解一下我是如何发布的,遇到了哪些问题。(啰嗦版) 我自己的环境: windows系统上:idea2020.1,tomcat8,mysql8等。 linux系统上:tomcat,mysql即可。如何搭建一台...

    我用的是我最近跟着B站学的一个web项目为例,讲解一下我是如何发布的,遇到了哪些问题。(详细版)

    一、我自己的环境:

    windows系统上:idea2020.1,tomcat8,mysql8等。
    linux系统上:tomcat,mysql,jdk即可。如何搭建一台CentOS版本的操作系统当做服务器,我之后会再写一篇博客。

    二、我们的目的是:

    将已经完成的web项目发布到linux服务器,就是将代码,数据库等转移到另一台电脑(服务器)上。
    这里要说明一下什么是服务器,他不也是一台电脑吗?为啥叫服务器?
    没错,就是一台电脑!首先可以很明确的告诉你,服务器也是电脑,服务器是为电脑提供服务的电脑,既然是电脑,那么它也一样是由CPU,主板,内存条,硬盘,机箱,电源等硬件组成。
    可以看看知乎的这篇文章:服务器到底是个什么东西?跟电脑有啥区别?

    三、这样做的好处(个人片面理解):

    (这台电脑一直开着机,可以随时访问该web项目)之前我们写好项目,在自己电脑的idea中运行(Tomcat Web 服务器在自己电脑,mysql也是在自己电脑,你只有一直开启它们的时候才能访问该项目的主页。你的电脑不可能一直开着机,也不可能一直开启着tomcat服务和mysql服务(因为这是你自己的电脑,不是一台服务器),这时一台一直开启着的电脑(服务器)就尤为重要了,你可以随时访问,也不用每次都要开启各种服务了,开启一次就够了,因为这台服务器一直开机运行着!!!)

    四、所要发布的项目是:

    云R记:Java入门级-个人博客系统
    在这里插入图片描述

    项目学习视频连接:【念安小姐姐2021最新项目】Java入门级-个人博客系统云R记Bootstrap+Jsp

    五、发布项目服务器选择:

    可以买一个腾讯云或是阿里云服务器!我还没有买过,之后再写一篇买服务器的博客。
    这里我用的是我们学校里免费的,老师给的,不用白不用,服务器主机地址为10.101.1.98(只有我们校园网可以连接上)。是CentOS6.10版本的Linux服务器,已经安装了tomcat8.5.43和mysql5.1.73。
    查看Centos版本:终端输入:cat /etc/issue
    在这里插入图片描述
    查看tomcat版本:进入到tomcat的bin目录下,再执行./version.sh
    在这里插入图片描述
    查看mysql版本:1.终端直接输入mysql -V
    在这里插入图片描述
    2.登录mysql, 输入 select version();
    在这里插入图片描述

    六、主要步骤:【重点】

    1.修改项目配置。
    2.打包项目 xxx.war。
    3.将打包的项目xxx.war发送到linux服务器的tomcat文件夹下的webapp中。
    4.配置自己想要的tomcatWeb服务器的项目名和端口号。
    5.数据库移植。
    6.开启tomcat和mysql服务即可。
    7.完成,浏览器访问即可,可以随时的登录个人博客了!!!!

    1.修改项目配置:

    我自己的电脑上的是mysql8.0,主机名是localhost,移植到linux前都要修改为linux中的对应版本(mysql5.7)和主机名(10.101.1.98),修改如下:将上面注释中的改成下面的:

    #driverClassName=com.mysql.cj.jdbc.Driver
    #url=jdbc:mysql://localhost:3306/db_cloud_diary?useSSL=false&serverTimezone=Asia/Shanghai
    #username=root
    #password=lixingwang521
    #
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://10.101.1.96:3306/db_cloud_diary?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
    username=root
    password=123456
    

    在这里插入图片描述

    2.打包项目 xxx.war。maven中点击package

    报错:原因是mysql驱动的版本没有改为低版本。
    在这里插入图片描述
    解决办法:将上面注释中的改成下面的:
    在这里插入图片描述
    问题解决。
    在这里插入图片描述
    打包成功:
    在这里插入图片描述
    target目录下xxx.war即为打包的文件。
    在这里插入图片描述
    War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码。当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布。War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动,它可以自动被解压。

    3.将打包的项目xxx.war发送到linux服务器的tomcat文件夹下的webapp中。

    我使用的是SecureCRT进行上传发送,步骤如下:
    打开tomcat文件夹下的webapp cd /root/lxw/apache-tomcat-8.5.43/webapps
    在这里插入图片描述

    4.(修改tomcat配置)配置自己想要的tomcatWeb服务器的项目名和端口号。

    打开linux,tomcat文件夹下的conf目录
    然后修改service.xml配置文件

    主要修改两个地方,其实也可以默认不修改,不修改访问的话,端口是8080, url上下文是war包的名字,这里我们修改端口号,可将8080修改为你想用的。

    <Context path="/app" docBase="/CloudDiary_war_exploded.war"></Context>
    

    在这里插入图片描述
    然后复制host,在其中添加一句,或者也可以直接修改原来的host在里面添加一句 其中主要是path 是指url的上下文,/app是指文件war的路径名称,
    在这里插入图片描述
    元素的属性:
    path:指定访问该Web应用的URL入口。这里可为 path="/“或path=”"
    docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于的appBase属性的相对路径,
    如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。
    这里可为相对路径:docBase="/projectName" 或绝对路径:docBase=“D:\tomcat\webapps\projectName”
    reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,
    如果监测到有class文件被修改的,服务器会自动重新加载Web应用。
    原文链接:https://blog.csdn.net/hffygc/article/details/86800234
    修改保存即可

    5.数据库移植。

    连接Navicat,或是其他数据库管理工具,连接linux上的mysql,进行数据库移植
    步骤如下:
    1.本地项目的数据库导出
    在这里插入图片描述
    2.使用Navicat连接linux的mysql,运行该文件即可:
    在这里插入图片描述

    6.开启tomcat和mysql服务。

    开启tomcat:打开tomcat文件夹下的bin目录 打开终端 输入: bashstart.sh
    开启mysql服务 打开终端 输入 service mysqld start

    7.完成,可以随时的登录个人博客了!!!!

    打开浏览器:输入网址:http://10.101.1.96:8080/CloudDiary_war_exploded/index即可默认,或是用上面你自己修改的访问地址!!!
    pc端:
    在这里插入图片描述
    移动手机端:
    在这里插入图片描述
    好啦,到此就完成啦!!!!请添加图片描述
    在这里插入图片描述

    展开全文
  • 3VOT是一个专业的网络发布平台,供大家通过3VOT云发布到互联网上。 对于每个人来说,3VOT 是将文档、图像和页面发布到互联网的方式。 开发人员发布他们的应用程序,自动支持数百万用户。 (静态,浏览器,单页) ...
  • 原文:http://www.alistapart.com/articles/fromswitchestotargets作者:Eric Meyer当我读了一遍Aaron Gustafson的Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8 后,我心里的第一反应就是深深的...
  • 浏览器介绍

    千次阅读 2020-10-18 10:41:26
    浏览器 浏览器结构组成 浏览器一般由七个模块组成: User Interface(用户界面) Browser engine(浏览器引擎) Rendering engine(渲染引擎) Networking(网络) ...浏览器引擎 -可以用户界面和渲染引
  • 浏览器内核详解

    2014-03-27 09:08:04
    对常用的浏览器的内核进行比较,分析优缺点,详细讲解目前的双核浏览器
  • 总结了浏览器缓存的原理,如何管理浏览器缓存
  • 常用浏览器介绍

    2013-05-12 10:21:47
    几种常见的浏览器内核简介:IE, Firefox, Opera, Chrome和苹果浏览器safari。几种常见的浏览器内核简介:IE, Firefox, Opera, Chrome和苹果浏览器safari。几种常见的浏览器内核简介:IE, Firefox, Opera, Chrome和...
  • 【综合篇】浏览器的工作原理:浏览器幕后揭秘

    千次阅读 多人点赞 2020-01-21 18:18:13
    web(给达达前端加星标,提升前端技能)了解浏览器是如何工作的,能够让你站更高的角度去理解前端浏览器的发展历程的三大路线,第一是应用程序web化,第二是web应用移动化,第三是web操...
  • 5款面向Linux的简单Web浏览器

    千次阅读 2021-05-11 21:30:08
    原标题:5款面向Linux的简单Web浏览器 【51CTO.com快译】喜欢Linux桌面的理由有很多。我常提到的一个理由是,几乎各方面都能找到...你可以使用青睐的任何开源浏览器,比如Firefox和Chromium,或者像Vivaldi和Chrom...
  • 此更新包含了很多功能,包括保存时在浏览器中重新加载页面、自动导入 forrequire()、React useState 钩子的重命名重构等等。 下载WebStorm 2021.2 功能和改进列表分为以下几类: 代码编辑:能够保存时...
  • 微软新推出的Edge浏览器将抛弃IE中最老的两项浏览器技术,代之以基于HTML5和JavaScript的插件。不过,新的扩展模式要等到今年夏天作为Windows 10的一...它上周的博客中证实了这一举动,将浏览器助手对象(BHO)添加...
  • 评价好的良心浏览器,最后一个比360浏览器好用

    万次阅读 热门讨论 2022-06-07 16:58:04
    大家使用浏览器的时候,比较关心的就是这个浏览器好不好用。对于个人的喜好和好用的界定,都是比较主观难以判定的。下面,给大家分享评价好的良心浏览器,也是本人觉得比较好用的浏览器。特别是最后一个,比360...
  • 优雅线程可NodeJS和浏览器上使用,这使得开发具有繁重计算功能(查找质数,处理大量数据等)的通用功能成为可能,并NPM上发布它们以任何这些环境中使用。 通过npm i elegant-threading elegantThreading npm ...
  • 在浏览器中输入一个URL会发生什么?

    千次阅读 多人点赞 2019-03-10 14:08:31
    最近看到一个题目,**当在浏览器中输入一个url后回车,后台发生了什么?**比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 网上各种的说法,不外乎都是这样的: 第一步:客户机提出域名解析请求,并...
  •  – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。 路由器缓存  – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存...
  • 热狗海鸥这是一个内置 node.js 中的服务器,可让您使用浏览器浏览媒体并将其推送到 chromecast。 应该适合家庭服务器上运行。 这旨在作为 UNIX 倾向人员为 chromecast 设置本地媒体服务器的起点。 UI 故意看起来...
  • 这篇文章旨在尽可能详细的解释一个经典的面试问题“当你在浏览器的地址栏键入’google.com’并按下enter键,会发生什么” 当你键盘上按下‘g’ 接下来的几节会解释所有有关键盘输入和操作系统中断的东西。但是...
  • 就是浏览器。虽然互联网从新兴到今天的走向普及不过短短十几年的时间,但是对于浏览器的展来说,经历了不少变化。具体回顾浏览器的发展历程之前,我们先来说明一下两个重要的概念,以方便后面的历程回顾。
  • 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的...1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: ...
  • 欧朋浏览器在沉淀了一段时间后,终于不久前发布了最新一代的浏览器,很多人会疑惑新欧朋浏览器究竟带来了什么:是核心的提升还是外观的改变?其实都不完全是,新欧朋浏览器带给我们的是从使用习惯上的颠覆,是一种...
  • 如何使用浏览器控制台通过JavaScript抓取并将数据保存文件中 (How to use the browser console to scrape and save data in a file with JavaScript) A while back I had to crawl a site for links, a...
  • tor 和tor浏览器Surf with anonymity using the Tor browser. Here’s how to install Tor on a Linux desktop. Ubuntu users beware: The Tor project recommends not installing Tor from Ubuntu’s regular ...
  • web前端浏览器兼容性问题,以及其他新知识点:例如SEO javascript mate等问题
  • 近期很多微博中发布链接的商家遇到一个问题,就是微博中发布的链接再也不能直接打开了,不管什么样的链接,发布后点开都提示:如需浏览器请复制到浏览器中打开。如图所示: 想要解决这个问题,我们就需要做个转...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,166
精华内容 40,466
关键字:

怎么在浏览器发布东西