1.options 方法有什么用

  • OPTIONS 请求与 HEAD 类似,一般也是用于客户端查看服务器的性能。
  • 这个方法会请求服务器返回该资源所支持的所有 HTTP 请求方法,该方法会用’*’来代替资源名称,向服务器发送 OPTIONS 请求,可以测试服务器功能是否正常。
  • JS 的 XMLHttpRequest对象进行 CORS 跨域资源共享时,对于复杂请求,就是使用 OPTIONS 方法发送嗅探请求,以判断是否有对指定资源的访问权限。

    2.短轮询、长轮询、SSE 和 WebSocket 间的区别

    短轮询和长轮询的目的都是用于实现客户端和服务器端的一个即时通讯。

    2.1 短轮询

    短轮询的基本思路:
    浏览器每隔一段时间向服务器发送 http 请求,服务器端在收到请求后,不论是否有数据更新,都直接进行 响应。这种方式实现的即时通信,本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化。
    优缺点

  • 优点是比较简单,易于理解。

  • 缺点是这种方式由于需要不断的建立 http 连接,严重浪费了服务器端和客户端的资源。当用户增加时,服务器端的压力就会变大,这是很不合理的。

    2.2 长轮询

    长轮询的基本思路:

  • 首先由客户端向服务器发起请求,当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将 这个请求挂起,然后判断服务器端数据是否有更新。

  • 如果有更新,则进行响应,如果一直没有数据,则到达一定的时间限制才返回。客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。

优缺点

  • 长轮询和短轮询比起来,它的优点是「明显减少了很多不必要的 http 请求次数」,相比之下节约了资源。
  • 长轮询的缺点在于,连接挂起也会导致资源的浪费。

    2.3 SSE

    SSE 的基本思想是:
    服务器使用流信息向服务器推送信息。严格地说,http 协议无法做到服务器主动推送信息。但是,有一种变通
    方法,就是服务器向客户端声明,接下来要发送的是流信息。也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来。这时,客户端不会关闭连接,会一直等着服务器发过来的新的数据流,视频播放就是这样的例子。SSE 就是利用这种机制,使用流信息向浏览器推送信息。它基于 http 协议,目前除了 IE/Edge,其他浏览器都支持。它相对于前面两种方式来说,不需要建立过多的 http 请求,相比之下节约了资源。

    2.4 WebSocket

    上面三种方式本质上都是基于 http 协议的,我们还可以使用 WebSocket 协议来实现。WebSocket 是 Html5 定义的一个新协议,与传统的 http 协议不同,该协议允许由服务器主动的向客户端推送信息。使用 WebSocket 协议的缺点是在服务器端的配置比较复杂。WebSocket 是一个全双工的协议,也就是通信双方是平等的,可以相互发送消息,而 SSE 的方式是单向通信的,只能由服务器端向客户端推送信息,如果客户端需要发送信息就是属于下一个 http 请求了。

    3.正向代理和反向代理

    其他网络相关 - 图1

  • 正向代理帮助客户端访问客户端自己访问不到的服务器,然后将结果返回给客户端。

  • 我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
  • 反向代理隐藏了真实的服务端,当我们请求一个网站的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,我们不知道,也不需要知道,我们只需要知道反向代理服务器是谁就好了,反向代理服务器会帮我们把请求转发到真实的服务器那里去。反向代理器一般用来实现负载平衡。
  • 反向代理拿到客户端的请求,将请求转发给其他的服务器,主要的场景是维持服务器集群的负载均衡,换句话说,反向代理帮其它的服务器拿到请求,然后选择一个合适的服务器,将请求转交给它。
  • 因此,两者的区别就很明显了,正向代理服务器是帮客户端做事情,而反向代理服务器是帮其它的服务器做事情。

    4.负载平衡的两种实现方式

  • 一种是使用反向代理的方式,用户的请求都发送到反向代理服务上,然后由反向代理服务器来转发请求到真实的服务器上,以此来实现集群的负载平衡。

  • 另一种是 DNS 的方式,DNS 可以用于在冗余的服务器上实现负载平衡。因为现在一般的大型网站使用多台服务器提供服务,因此一个域名可能会对应多个服务器地址。当用户向网站域名请求的时候,DNS 服务器返回这个域名所对应的服务器 IP 地址的集合,但在每个回答中,会循环这些 IP 地址的顺序,用户一般会选择排在前面的地址发送请求。以此将用户的请求均衡的分配到各个不同的服务器上,这样来实现负载均衡。这种方式有一个缺点就是,由于 DNS 服务器中存在缓存,所以有可能一个服务器出现故障后,域名解析仍然返回的是那个 IP 地址,就会造成访问的问题

    5.网络模型

    网络是一个复杂的系统,不仅包括大量的应用程序、端系统、通信链路、分组交换机等,还有各种各样的协议组成,那么现在我们就来聊一下网络中的协议层次。
    为了给网络协议的设计提供一个结构,网络设计者以分层(layer)的方式组织协议,每个协议属于层次模型之一。每一层都是向它的上一层提供服务(service),即所谓的服务模型(service model)。每个分层中所有的协议称为 协议栈(protocol stack)。因特网的协议栈由五个部分组成:物理层、链路层、网络层、运输层和应用层。我们采用自上而下的方法研究其原理,也就是应用层 -> 物理层的方式。

    5.1 应用层

    应用层是网络应用程序和网络协议存放的分层,因特网的应用层包括许多协议,例如我们学 web 离不开的 HTTP,电子邮件传送协议 SMTP、端系统文件上传协议 FTP、还有为我们进行域名解析的 DNS 协议。应用层协议分布在多个端系统上,一个端系统应用程序与另外一个端系统应用程序交换信息分组,我们把位于应用层的信息分组称为 报文(message)

    5.2 运输层

    因特网的运输层在应用程序断点之间传送应用程序报文,在这一层主要有两种传输协议 TCPUDP,利用这两者中的任何一个都能够传输报文,不过这两种协议有巨大的不同。
    TCP 向它的应用程序提供了面向连接的服务,它能够控制并确认报文是否到达,并提供了拥塞机制来控制网络传输,因此当网络拥塞时,会抑制其传输速率。
    UDP 协议向它的应用程序提供了无连接服务。它不具备可靠性的特征,没有流量控制,也没有拥塞控制。我们把运输层的分组称为 报文段(segment)

    5.3 网络层

    因特网的网络层负责将称为 数据报(datagram) 的网络分层从一台主机移动到另一台主机。网络层一个非常重要的协议是 IP 协议,所有具有网络层的因特网组件都必须运行 IP 协议,IP 协议是一种网际协议,除了 IP 协议外,网络层还包括一些其他网际协议和路由选择协议,一般把网络层就称为 IP 层,由此可知 IP 协议的重要性。

    5.4 链路层

    现在我们有应用程序通信的协议,有了给应用程序提供运输的协议,还有了用于约定发送位置的 IP 协议,那么如何才能真正的发送数据呢?为了将分组从一个节点(主机或路由器)运输到另一个节点,网络层必须依靠链路层提供服务。链路层的例子包括以太网、WiFi 和电缆接入的 DOCSIS 协议,因为数据从源目的地传送通常需要经过几条链路,一个数据包可能被沿途不同的链路层协议处理,我们把链路层的分组称为 帧(frame)

    5.5 物理层

    虽然链路层的作用是将帧从一个端系统运输到另一个端系统,而物理层的作用是将帧中的一个个 比特 从一个节点运输到另一个节点,物理层的协议仍然使用链路层协议,这些协议与实际的物理传输介质有关,例如,以太网有很多物理层协议:关于双绞铜线、关于同轴电缆、关于光纤等等。
    五层网络协议的示意图如下
    其他网络相关 - 图2

    6.OSI七层参考模型

    我们上面讨论的计算网络协议模型不是唯一的 协议栈,ISO(国际标准化组织)提出来计算机网络应该按照7层来组织,那么7层网络协议栈与5层的区别在哪里?
    其他网络相关 - 图3
    从图中可以一眼看出,OSI 要比上面的网络模型多了 表示层会话层,其他层基本一致。表示层主要包括数据压缩和数据加密以及数据描述,数据描述使得应用程序不必担心计算机内部存储格式的问题,而会话层提供了数据交换的定界和同步功能,包括建立检查点和恢复方案。

    7.Websocket

    7.1连接过程

    WebSocket建立连接需要先通过一个http请求进行和服务端握手。握手通过后连接就建立并保持了。浏览器先发送请求:
    1. GET / HTTP/1.1
    2. Host: localhost:8080
    3. Origin: [urI=http://127.0.0. :3000http:/127.0.0.1:3000[/ur]Connection: Upgrade
    4. Upgrade: WebSocket
    5. Sec-WebSocket-Version: 13
    6. Sec-WebSocket-Key: w4v7O6xFTi36Iq3RNcgctw==

服务端返回一个请求:

  1. HTTP/1.1 101 Switching Protocols
  2. Connection:Upgrade
  3. Upgrade: WebSocket
  4. Sec-WebSocket- Accept: Oy4NRAQ13jhfONC7bP8dTKb4PTU=

这样握手就完成了。此时这个连接并不会断掉,而浏览器和服务端可以用这个连接相互发消息。(但是这个时候连接就不是 http 连接而是升级成了WebSocket连接。浏览器和服务端相互发送的不是http请求。这里先说明下,接下来我们来看下http长连接是怎么回事)。

7.2 简介

WebSocket是双向的,在客户端-服务器通信的场景中使用的全双工协议,与HTTP不同,它以ws://wss://开头。它是一个有状态协议,这意味着客户端和服务器之间的连接将保持活动状态,直到被任何一方(客户端或服务器)终止。在通过客户端和服务器中的任何一方关闭连接之后,连接将从两端终止。
让我们以客户端-服务器通信为例,每当我们启动客户端和服务器之间的连接时,客户端-服务器进行握手随后创建一个新的连接,该连接将保持活动状态,直到被他们中的任何一方终止。建立连接并保持活动状态后,客户端和服务器将使用相同的连接通道进行通信,直到连接终止。
新建的连接被称为WebSocket。一旦通信链接建立和连接打开后,消息交换将以双向模式进行,客户端-服务器之间的连接会持续存在。如果其中任何一方(客户端服务器)宕掉或主动关闭连接,则双方均将关闭连接。套接字的工作方式与HTTP的工作方式略有不同,状态代码101表示WebSocket中的交换协议。
其他网络相关 - 图4

7.3 何时使用

  • 即时Web应用程序:即时Web应用程序使用一个Web套接字在客户端显示数据,这些数据由后端服务器连续发送。在WebSocket中,数据被连续推送/传输到已经打开的同一连接中,这就是为什么WebSocket更快并提高了应用程序性能的原因。 例如在交易网站或比特币交易中,这是最不稳定的事情,它用于显示价格波动,数据被后端服务器使用Web套接字通道连续推送到客户端。
  • 游戏应用程序:在游戏应用程序中,你可能会注意到,服务器会持续接收数据,而不会刷新用户界面。屏幕上的用户界面会自动刷新,而且不需要建立新的连接,因此在WebSocket游戏应用程序中非常有帮助。
  • 聊天应用程序:聊天应用程序仅使用WebSocket建立一次连接,便能在订阅户之间交换,发布和广播消息。它重复使用相同的WebSocket连接,用于发送和接收消息以及一对一的消息传输。

    7.4 不能使用WebSocket的场景

    如果我们需要通过网络传输的任何实时更新或连续数据流,则可以使用WebSocket。如果我们要获取旧数据,或者只想获取一次数据供应用程序使用,则应该使用HTTP协议,不需要很频繁或仅获取一次的数据可以通过简单的HTTP请求查询,因此在这种情况下最好不要使用WebSocket
    注意:如果仅加载一次数据,则RESTful Web服务足以从服务器获取数据。

    7.5 总结

    | WEBSOCKET | HTTP | | :—- | :—- | | WebSocket是一种双向通信协议,可以通过重用已建立的连接通道将数据从客户端发送到服务器,或者从服务器发送到客户端。连接保持活动状态,直到被客户端或服务器终止。 | HTTP协议是TCP协议之上的单向协议,TCP是面向连接的传输层协议,我们可以在获得响应HTTP连接关闭后再使用HTTP请求方法来创建连接。 | | 几乎所有的实时应用程序(如(交易,监视,通知)服务)都使用WebSocket在单个通信通道上接收数据。 | 简单的RESTful应用程序使用无状态的HTTP协议。 | | 所有经常更新的应用程序都应该使用WebSocket,它比HTTP连接更快。 | 当我们不想在特定时间内保留连接或不重复使用单个连接来传输数据时使用HTTPHTTP连接的速度比WebSocket慢。 |

8. wamp是什么? 与websocket有什么区别?

8.1 介绍

WAMP(Web Application Messaging Protocol)是一种路由协议,所有组件都连接到WAMP路由器上,WAMP路由器在组件之间执行消息路由。其设计目的是为应用程序组件之间的实时消息交换提供开放标准。
WAMP需要一个可靠的,有序的全双工消息通道作为传输层,默认情况下使用 WebSocket。但是,真正的实现也可以使用与这些特性匹配的其他传输,比如原始套接字或HTTP长轮询与WAMP进行通信,或者使用RawSocket。
这里比较一下这两个传输协议:

  • Websocket:使用Websocket传输,可以创建持久的双向连接。消息没有HTTP头,这可以最大限度的减少开销
  • RawSocket:RawSocket上的WAMP使用的二进制消息,不需要事先HTTP握手,具有较小的开销。但是它最大的缺点就是浏览器不允许TCP连接。要在Web浏览器上使用客户端,必须安装浏览器扩展,同时另一个缺点是缺少传输级压缩。

    8.2 传递模式

    WAMP提供了两种消息传递模式:

  • Publish & Subscribe(发布订阅)

  • routed Remote Procedure Calls (rRPC)(路由远程过程调用)

    1.发布和订阅

    发布和订阅是一种已建立的消息传递模式。其中组件(订阅者)通知路由器它想要接收的主题的信息(也就是它要订阅主题),然后,另一个组件(发布者)可以发布关于某个主题的消息,最后。路由器将事件分发给所有订阅该主题的组件。

    2.路由远程过程调用

    路由远程过程调用依赖于发布和预定模式。一个组件(Callee)向路由器提供一个特定的过程。其他组件(Callers)可以调用该过程。路由器调用Callee上的过程,接收过程的结果,然后将此结果转发回Caller。
    路由RPC和传统的客户端-服务端RPC的不同之处在于路由器充当呼叫者和被呼叫者之间的中介,传统的RPC直接调用(通俗讲:RPC 是指计算机 A 上的进程,调用另外一台计算机 B 上的进程,其中 A 上的调用进程被挂起,而 B 上的被调用进程开始执行,当值返回给 A 时,A 进程继续执行。)
    路由RPC的优点

  • 因为所有消息都在WAMP路由上,因此不再需要在Callee和Caller之间建立直接网络连接或路径。

    8.3 WAMP中的消息路由

    WAMP在开放的WebSocket协议中提供统一的应用程序路由,该协议适用于不同的语言。
    使用WAMP,可以从应用程序组件构建分布式系统,这些组件低耦合实时通信。
    先在这里列出WAMP的一些特点(优点)

  • 低耦合

  • 基于组件
  • 实时通信
  • 语言独立

    1.低耦合

    WAMP提供了我们称之为应用程序通信的统一应用程序路由

  • 发布和订阅者模式中的事件路由

  • 远程过程调用模式中的呼叫路由

接下来让我们分别比较传统方式与WAMP中发布订阅模式和路由远程过程调用得出这些特点。
传统方式
先看一看传统方式“客户端-服务器”的模式,在这种模式中,远程过程调用直接从主叫方到被叫方:
其他网络相关 - 图5在客户端-服务器模型中,调用者需要了解被调用者所在的位置以及如何访问它。这就引入了调用者和被调用这之间的强大耦合,因此应用程序可能很快就会变得很复杂难以维护。
WAMP中的发布-订阅模式
在该模式中,发布者将消息(主题)传递给事件路由,并且订阅者仅仅是通过对消息(主题)的订阅,在事件路由接收到该消息(主题)后,将消息(主题)传递给订阅者。
整个过程中,发布者和订阅者之间是间接的完成整个过程的,对方都不需要了解彼此
其他网络相关 - 图6
WAMP中的路由远程过程调用
这个过程和发布-订阅的模式类似,当调用者想要调用远程过程时,它会和呼叫路由通信,并且只提供调用过程的URI以及调用参数,然后呼叫路由会在注册的被调用者中进行查找并调用,之后将结果路由回来。两者之间没有直接的调用。
其他网络相关 - 图7
以上三种模式的比较可以得出,WAMP提供的两种模式都是通过添加路由器(或者通俗理解就是中介),免去调用者和被调用者之间的之间交流,以较低组件之间的耦合。这也是WAMP的优点之一了。

2.基于组件

如果将事件路由(Broker—用于发布订阅)和呼叫路由(Dealer—用于路由远程过程调用)组合在一起就会得到WAMP中路由器
其他网络相关 - 图8
如果将这两者组合成一个路由器,那么这一个路由器就可以担任起两个作用。

3. 实时

WebSocket是一种新的Web协议,它可以在需要双向实时通信时克服HTTP的限制,并且它提供了与Web和浏览器兼容的双向实时消息传递,除此之外,还可以在费浏览器环境中运行WebSocket。
WAMP是一个正式注册的WebSocket子协议(运行在WebSocket之上),使用JSON作为消息序列化格式。
因为WAMP也支持实时双向通信。

4. 语言无关

WAMP拥有许多常见和不常见的语言功能的一流支持。
这也就意味着WAMP可以实现及时使用—无需关心语言。

9.WebSocket与http的区别与联系

9.1 WebSocket和HTTP相同点

  • 都是基于TCP的应用层协议
  • 都使用Request/Response模型进行连接的建立
  • 在连接的创建过程中对错误的处理的方式相同,在这个阶段WebSocket可能返回和HTTP相同的返回码。
  • 都可以在网络中传输数据

    9.2 WebSocket和HTTP的不同点

  • WebSocket使用http来创立连接,但是定义的了一系列新的header域,这些域在http中并不会使用。

  • WebSocket的连接不能通过中间人来转发,它必须是一个直接连接
  • WebSocket连接建立之后,通信双反都可以在任何时刻向另一方放松数据
  • WebSocke连接t建立之后,数据的传输使用帧来传递,不在需要request消息
  • WebSocket的数据帧有序。使用WebSocket而不使用Socket的原因:因为整个浏览器都不支持直接调用系统底层的Socket,基于浏览器的web自然无法调用,只能使用封装的高级协议方案——WebSocket

    9.3 WebSocket详解

    WebSocket是一个计算机通信协议,在单个TCP连接上提供全双工的通信模式。WebSocket设计用于 Web浏览器和Web服务器之间的通讯,但也可以用于其它的客户端和应用服务器。WebSocket是独立的基于TCP的协议。 WebSocket和http的关系是,WebSocket的握手被翻译成http的升级请求。WebSocket可以降低Web服务器和浏览器之间的开销,这个特性适合实时数据的传输。WebSocket协议特性,让客户端和服务器之间没有客户端请求的请求的情况进行标准通信称为可能,另外也可以在连接打开的情况进行数据的收发,服务器与浏览器之间的双向通信就按这种方式进行。协议的通讯端口为TCP端口的80或443,这样就不会进行非web通信时被防火墙拦截。

    10.DNS 为什么使用 UDP 协议作为传输层协议?

  • DNS 使用 UDP 协议作为传输层协议的主要原因是为了避免使用 TCP 协议时造成的连接时延。因为为了得到一个域名的 IP 地址,往往会向多个域名服务器查询,如果使用 TCP 协议,那么每次请求都会存在连接时延,这样使 DNS 服务变得很慢,因为大多数的地址查询请求,都是浏览器请求页面时发出的,这样会造成网页的等待时间过长。

  • 使用 UDP 协议作为 DNS 协议会有一个问题,由于历史原因,物理链路的最小MTU = 576,所以为了限制报文长度不超过576,UDP 的报文段的长度被限制在 512 个字节以内,这样一旦 DNS 的查询或者应答报文,超过了 512 字节,那么基于 UDP 的DNS 协议就会被截断为 512 字节,那么有可能用户得到的 DNS 应答就是不完整的。这里 DNS 报文的长度一旦超过限制,并不会像 TCP 协议那样被拆分成多个报文段传输,因为 UDP 协议不会维护连接状态,所以我们没有办法确定那几个报文段属于同一个数据,UDP 只会将多余的数据给截取掉。为了解决这个问题,我们可以使用 TCP 协议去请求报文。
  • DNS 还存在的一个问题是安全问题,就是我们没有办法确定我们得到的应答,一定是一个安全的应答,因为应答可以被他人伪造,所以现在有了 DNS over HTTPS 来解决这个问题。

    11.谈谈 CDN 服务?

    CDN 是一个内容分发网络,通过对源网站资源的缓存,利用本身多台位于不同地域、不同运营商的服务器,向用户提供资就近访问的功能。也就是说,用户的请求并不是直接发送给源网站,而是发送给 CDN 服务器,由 CND 服务器将请求定位到最近的含有该资源的服务器上去请求。这样有利于提高网站的访问速度,同时通过这种方式也减轻了源服务器的访问压力。

    12.网站域名加 www 与不加 www 的区别?

  • 我们知道,根域名其实是没有前导 www 的。举个例子,本站的根域名是 w3cfun.com , 如果我在前面加上一个 www , 那么我的域名看起来是 www.w3cfun.com 事实上后者是一个子域名,这是有 www 与没有 www 的最本质区别。

  • 为什么会有 www?我们平时听到的网址都是 www.xxxx.com 的类型,潜意识中就觉得网站就是应该以 www 开头的,因为 www 是 World Wide Web 的所写。其实不然。域名的本质是 IP 地址的别名 (w3cfun to IP address), 也就是说,一个域名不一定要用来做“网站”,而可以是其它的一些目的,例如仅仅是为了帮助记忆一个 IP 地址。所以一个域名对应的 IP 可能会有很多种类的服务。我们俗称为网站的东西实际上是一个 HTTP 类的服务。在以前,浏览器并不会识别域名下的服务是什么种类的,所以,加上 www 可以告诉浏览器,这是个网站。
  • 类似地,我们也会看到诸如bbs.w3cfun.com(从前,BBS 是一个独立的,不依赖于 HTTP 的服务), mail.w3cfun.com 等域名。你也许会想到,邮箱地址常常会是 webmail@w3cfun.com的形式,其实 FTP 中也有 username:password@ftp.w3cfun.com 或 username@ftp.w3cfun.com 的形式。请注意通常这里邮件服务没有使用子域名而是使用了根域名,这是约定俗成。而 FTP 则使用了 ftp.w3cfun.com的子域名,以便区分服务类型。
  • 为什么要删掉 www?而现在,我们看到的 URL 常常是 http://w3cfun.com/ , ftp://w3cfun.com/ 等。更要紧的可能会有 http://w3cfun.com:8080/ 这样的。此时我们已经在 URL 中标记了服务的类型是 HTTP 或者 FTP. 这样,我们就没有必要再指定子域名了。所以,这也是 NO-WWW 组织倡议大家删除域名中的 www 的主要原因。然后,www 会使你的 URL 看起来很长。
  • 为什么不要删掉 www?WordPress 社区里的 Matt 建议个人网站中不要包含 www, 而暗示了公司站点最好要包含 www. 其实好像也是这样的,很多国际大站都是包含 www 的。据传言,如果在根域名下直接设置了 Cookies, 会影响到所有的子域名。但是我记得在 Apache + PHP + Firefox 下测试,根域名下的 Cookies 并不会被子域名读取。可能传言说的是一些别的、老的浏览器吧。
  • 说 Cookies 有什么用呢?您可能会发现,本站的所有上传文件都不在默认的 /wp-content/uploads/ 目录,而是在 http://uploads.w3cfun.com/ 中。如果我使用默认的目录,浏览器不管你是图片还是网页,都发 Cookies 给服务器,这样会消耗一部分读取图片的时间。如果使用一个别的域名,哪怕是子域名,也可以节约部分时间。有的人甚至为了这么点速度,专门申请了一个顶级域名来存放上载文件。
  • 谷歌会如何对待?有很多SEO ,甚至谷歌自己都说 www 与非 www 是两个不一样的地址,计算 PR 时都是分开的。我个人比较赞同这种说法。所以在谷歌站长工具中,一定要设置好 www 偏好设置,并且不要随便更改是否有 www. 这样对 SEO 还是不利的。

    13.怎么实现多个网站之间共享登录状态

  • 在多个网站之间共享登录状态指的就是单点登录。多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

  • 我认为单点登录可以这样来实现,首先将用户信息的验证中心独立出来,作为一个单独的认证中心,该认证中心的作用是判断客户端发送的账号密码的正确性,然后向客户端返回对应的用户信息,并且返回一个由服务器端秘钥加密的登录信息的 token 给客户端,该token 具有一定的有效时限。
  • 当一个应用系统跳转到另一个应用系统时,通过 url 参数的方式来传递 token,然后转移到的应用站点发送给认证中心,认证中心对 token 进行解密后验证,如果用户信息没有失效,则向客户端返回对应的用户信息,如果失效了则将页面重定向会单点登录页面。