企业个人网站口碑营销策略
1:什么是域名
域名的结构采用层次树状命名体系,由多级标签通过点号分隔组成,从右到左层级递增。以下是核心组成部分解析:
顶级域名(不能自定义)
位于最右侧,分为两类:
通用顶级域:如 .com(商业机构)、.org(非营利组织)
国家代码顶级域:如 .cn(中国)、.us(美国)
特殊域名:.arpa(反向解析专用)
二级域名(可以自定义,比如baidu)
用户自定义部分,通常代表品牌或组织(如 baidu.com 中的baidu)
baidu就是二级域名
需通过注册机构申请,具有唯一性
三级域名(也叫子域名可以自定义,主要作为二级域名下的功能区别)
可无限扩展,用于功能细分(如 www、mail、fanyi、wenku)
典型示例:
news.sports.example.com
其中 news 为三级域名,sports 为二级子域
百度域名实际案例举例
fanyi.baidu.com (这是百度翻译的网站,fanyi就是子域名,baidu就是二级域名)
wenku.baidu.com (这是百度文库的网站,wanku就是子域名,baidu就是二级域名)
www.baidu.com (这是百度的主网站,www就是三级域名,baidu就是二级域名)
2:什么是跨域、跨站
跨站:顶级域名或二级域名不同(如 a.com 与 b.com),实际案例举例
www.baidu.com和www.tencent.com 这两个网站分别是百度和腾讯,他们的根域名相同都是com。但是二级域名不同,一个是baidu,一个是tencent。这就是跨站
跨域:协议、域名、端口任意不同。都是跨域,浏览器要求更严格
例子1: http://a.com 与 https://a.com
浏览器对此判断更严格,他们协议不同一个是http。一个是https
例子2: http://127.0.0.1:8080 与 http://127.0.0.1:8081
浏览器对此判断更严格,他们的端口不一样,一个是80、一个是81
4:cookie的跨域
Cookie的默认限制
默认仅对当前完整域名有效(如baidu.com 的Cookie 无法被 fanyi.baidu.com 直接读取)
需显式设置 Domain 属性(如 .baidu.com)才能实现跨子域共享
设置 Cookie 作用域
服务端设置 Cookie 时指定 Domain=.baidu.com
Cookies作用域优化:
若设置Cookie域为 .baidu.com,则 www.baidu.com 和 fanyi.baidu.com 可共享Cookie;
否则根域名baidu.com 设置的Cookie无法被其他子域读取(存在安全隔离)。
但cookie是有限制的,这个限制就是cookie的域(通常对应网站的域名),浏览器发送http请求时会自动携带与该域匹配的cookie,而不是所有cookie
4.1:技术实现要求
服务端设置,响应头需包含
Set-Cookie: key=value; Domain=.baidu.com; Path=/; Secure; SameSite=None
其中 SameSite=None 允许跨站携带(需HTTPS支持)
客户端配置
AJAX请求需启用 withCredentials: true,并配合服务端返回 Access-Control-Allow-Credentials: true
4.2:典型应用场景SSO
单点登录(SSO):通过跨域Cookie实现多系统统一登录状态(如 auth.example.com 与 app.example.com 共享认证信息)
分布式系统:需结合Redis或JWT解决Session同步问题
4:单点登录
4.1:什么是单点登录
单点登录(Single Sign On 简称 SSO)是一种统一认证和授权机制,指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,不再需要重新登录验证。
单点登录是互联网应用和企业级平台中的基础组件服务。比如百度贴吧、百度知道、百度文库等,只要登录百度账号,在任何一个地方都是已登录状态,不需要重新登录。此外,第三方授权登录,如在京东中使用微信登录。解决信息孤岛和用户不对等的实现方案。
4.2:单点登录的优点和不足
单点登录解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录。除此之外,还有以下优点:
1)提高用户的效率。用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。
2)提高开发人员的效率。SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。
4.3:单点登录实现机制
单点登录听起来很复杂,实际上架构非常简单,具体如下图所示:
5:单点登录实现方案优缺点
5.1 基于Cookie
我们知道在单系统中基于session和cookie的案例,如果单系统后端是集群,那么session需要中心存储,比如redis存储session,这种是单系统集群的方案。
基于cookie和session怎么实现多系统,比如a.oa.com、b.oa.com、c.oa.com。
这三个域名二级域名相同,但是三级域名不同,就可以利用cookie的域生效机制,设置cookie在
.oa.com这个域下的所有子域名生效,就可以使用基于cookie的单点登陆了。
案例解释:
单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器与服务器之间维护会话状态。但cookie是有限制的,这个限制就是cookie的域(通常对应网站的域名),浏览器发送http请求时会自动携带与该域匹配的cookie,而不是所有cookie。既然这样,为什么不将web应用群中所有子系统的域名统一在一个顶级域名下,例如wenku.baidu.com、fanyi.baidu.com然后将它们的cookie域设置为“.baidu.com”,这种做法理论上是可以的,甚至早期很多多系统登录就采用这种同域名共享cookie的方式。
缺点如下:
1:cookie不能跨域,应用群域名得统一
2:其次,应用群各系统使用的技术(至少是web服务器比如tomcat)要相同,不然cookie的key值(tomcat为JSESSIONID)不同,无法维持会话,共享cookie的方式是无法实现跨语言技术平台登录的,比如java、php、.net系统之间;
3:cookie本身不安全。