Cookie 的安全属性有哪些?如何防止 Cookie 被窃取?Cookie 的安全属性包括 Secure、HttpOnly、SameSite 和 Domain/Path 限制,这些属性对于防止 Cookie 被窃取或滥用至关重要。
**Secure 标志**
- 只能通过 HTTPS 协议传输
- 防止在非加密连接中泄露
- 示例:`Set-Cookie: token=xyz; Secure`
**HttpOnly 标志**
- 禁止 JavaScript 通过 document.cookie 访问
- 防止 XSS 攻击窃取 Cookie
- 示例:`Set-Cookie: sessionId=abc; HttpOnly`
**SameSi...
服务端 · 2月24日 22:22
Cookie 的 Expires 和 Max-Age 属性有什么区别?如何设置 Cookie 的过期时间?Expires 和 Max-Age 都是用于控制 Cookie 过期时间的属性,但它们的实现方式和行为有所不同。
**Expires 属性**
**特点**
- 使用绝对时间(GMT 格式)
- 指定 Cookie 的具体过期日期和时间
- 兼容性更好,支持旧版浏览器
**语法**
```javascript
// 设置 Expires
const expires = new Date();
expires.setDate(expires.getDate() + 7); // 7天后过期
document.cookie = "token=abc; Expires=" + expi...
服务端 · 2月24日 22:24
什么是 GORM,它的核心特性有哪些?GORM(Go Object-Relational Mapping)是 Go 语言中最流行的 ORM 库之一,它提供了强大的数据库操作功能。
## 核心特性
1. **全功能 ORM**:支持关联、钩子、预加载、事务等功能
2. **关联关系**:支持 Has One、Has Many、Many To Many、Belongs To 等关联
3. **钩子函数**:支持 Before/After Create、Save、Update、Delete、Find 等钩子
4. **自动迁移**:支持自动创建表、添加外键、索引等
5. **链式调用**:提供流畅的 API 设计,支持链式操作...
服务端 · 2月24日 23:35
pnpm workspace 如何配置和使用?pnpm workspace 是 pnpm 内置的 monorepo 解决方案,用于管理多个包在一个仓库中。
**基本配置:**
```yaml
# pnpm-workspace.yaml
packages:
- 'packages/*' # 所有 packages 目录下的包
- 'apps/*' # 所有 apps 目录下的应用
- 'shared/*' # 共享模块
```
**项目结构示例:**
```
my-monorepo/
├── pnpm-workspace.yaml
├── package.json
├── ...
服务端 · 3月1日 10:24
pnpm 如何处理 peer dependencies?与 npm 有什么不同?pnpm 对 peer dependencies 的处理更加严格和正确,这是其重要特性之一。
**什么是 Peer Dependencies:**
```json
// react-dom/package.json
{
"peerDependencies": {
"react": "^18.0.0" // 需要宿主项目提供 react
}
}
```
**npm/Yarn 的问题:**
```bash
# 项目依赖
{
"dependencies": {
"react": "^17.0.0",
"react-dom": "^18.0.0" ...
服务端 · 3月1日 10:25
pnpm 常用命令有哪些?与 npm 命令有什么区别?pnpm 提供了丰富的 CLI 命令来管理依赖和项目。
**安装命令:**
```bash
# 安装所有依赖
pnpm install
pnpm i
# 安装单个包
pnpm add lodash
pnpm add lodash@4.17.21
# 安装到不同依赖类型
pnpm add lodash --save-prod # dependencies (默认)
pnpm add lodash --save-dev # devDependencies
pnpm add lodash --save-optional # optionalDependencie...
服务端 · 3月1日 10:27
pnpm 的 overrides 和 resolutions 有什么区别?如何使用?pnpm 提供了强大的依赖覆盖机制,主要通过 `overrides` 和 `resolutions` 来实现。
**pnpm.overrides:**
用于强制覆盖依赖版本,无论原始依赖声明什么版本。
```json
// package.json
{
"pnpm": {
"overrides": {
"lodash": "^4.17.21",
"react": "^18.0.0"
}
}
}
```
**使用场景:**
1. **修复安全漏洞**
```json
{
"pnpm": {
"overrides": {
...
服务端 · 3月1日 12:00
