1. 说明: 使用相对路径来解决, 一个非常重要的规则:页面所有的相对路径,在默认情 况下,都会参考当前浏览器地址栏的路径 http://ip:port/工程名/ + 资源来进行跳转。所以我们可以直接这样写:

相对路径带来的问题举例

base标签

1.base 标签是 HTML语言中的基准网址标记,它是一个单标签,位于网页头部文件的 head标签内

2.一个页面最多只能使用一个 base 元素,用来提供一个指定的默认目标,是一种表达路径和连接网址的标记。

3.常见的 url 路径形式分别有相对路径与绝对路径,如果base 标签指定了目标,浏览器将通过这个目标来解析当前文档中的所有相对路径,包括的标签有(a、img、link、form)

4.也就是说,浏览器解析时会在路径前加上base给的目标,而页面中的相对路径也都转换成了绝对路径。使用了base标签就应带上href属性和target属性

切记!!! 当你不论如何都找不出问题的时候,记得清理缓存

细节说明

工程路径优化

会话技术

底层机制

Cookie有效路径问题

Cookie2也会发送给服务器

### 什么是 Cookie 的有效路径?

**Cookie 的有效路径**(`Path` 属性)是指 Cookie 在浏览器中可以被哪些 URL 访问。它定义了浏览器应该在什么路径下发送 Cookie。当浏览器发送请求时,如果请求的 URL 路径与 Cookie 的 Path 属性匹配,浏览器才会在请求中附带这个 Cookie。

有效路径的作用是为了限制 Cookie 的作用范围,让它只在特定路径下使用,以增强安全性和减少无关请求中带上不必要的 Cookie。

### Cookie 的 Path 属性规则

1. **默认路径**

- 如果服务器发送的 Cookie 中没有指定 Path 属性,浏览器会自动设置 Cookie 的路径为创建它的那个网页所在的目录及其子目录。

- 例如,如果用户访问 http://example.com/account/profile,而服务器没有指定 Path,那么该 Cookie 的默认路径将是 /account/。此时,只有 /account/ 及其子目录(如 /account/settings//account/profile/)的请求会带上这个 Cookie。

2. **设置指定路径**

- 服务器可以通过 Set-Cookie 响应头来明确指定 Cookie 的路径。例如:

```http

Set-Cookie: username=JohnDoe; Path=/account

```

这会使得 Cookie 在 /account/ 及其所有子路径下有效。

3. **子路径继承**

- 当一个 Cookie 的 Path 属性为某个路径时,该路径的所有子路径也会继承这个 Cookie。

- 例如,`Path=/account` 表示 /account, /account/settings, /account/profile 等路径都可以访问该 Cookie。

4. **根路径 /**

- 如果将 Path 属性设为 /,意味着这个 Cookie 对整个网站的所有路径都有效,即所有的请求都会附带这个 Cookie。

- 例如:

```http

Set-Cookie: sessionId=abc123; Path=/

```

这种设置意味着所有以 http://example.com/ 开头的 URL(如 /, /about, /account/profile)都可以访问这个 Cookie。

### Cookie 有效路径的例子

假设有以下路径结构:

- / (首页)

- /about

- /account

- /account/profile

- /account/settings

**例子1:默认路径**

- 当你在 http://example.com/account/profile 访问时,服务器发送:

```http

Set-Cookie: user=JohnDoe;

```

浏览器会将这个 Cookie 的 Path 设置为 /account/,因此它对 /account/profile, /account/settings 有效,但不会在 //about 这样的路径中被发送。

**例子2:指定路径**

- 服务器明确指定 Path=/account

```http

Set-Cookie: sessionId=xyz123; Path=/account

```

这个 Cookie 会在 /account, /account/profile, /account/settings 等路径上有效,但在 //about 等路径上无效。

**例子3:根路径 /**

- 服务器设置:

  ```http
  Set-Cookie: globalSession=abc456; Path=/

```

这个 Cookie 会在整个网站上有效,所有的请求都会附带这个 Cookie。

### 浏览器发送 Cookie 时的路径匹配

当浏览器访问某个 URL 时,它会检查该 URL 路径是否与已存储的 Cookie 的 Path 属性匹配:

- 浏览器只会发送那些路径与当前 URL 匹配的 Cookie。

- 路径匹配是通过前缀匹配实现的,浏览器会检查当前 URL 是否以 Cookie 的 Path 为前缀。

例如:

- 如果 Path/account/,那么 /account/profile 匹配 /account/,浏览器会发送该 Cookie。

- 但 /about 不匹配 /account/,因此浏览器不会发送该 Cookie。

### 其他注意事项

1. **Cookie 作用域与路径结合**

- Cookie 的作用范围不仅受 Path 限制,还受 Domain 限制。只有当请求的域名和路径都匹配时,浏览器才会发送 Cookie。

2. **安全性考虑**

- 如果一个 Cookie 的作用范围过广(如设置为 /),那么该 Cookie 会被发送给网站上每一个请求,这可能增加安全风险,尤其是在敏感数据(如会话 ID)被暴露的情况下。因此,合理地限制 Cookie 的 Path 属性可以减少这种风险。

### 总结

- **有效路径** 控制了 Cookie 在网站中的作用范围。

- 默认情况下,Cookie 的 Path 是当前文档所在的目录及其子目录。

- 通过 Path 属性,服务器可以指定 Cookie 在特定路径或整个站点范围内生效。

- Path=/ 使得 Cookie 对整个网站有效,而设置更窄的路径如 /account 可以将 Cookie 限制在指定的部分应用中。