Skip to content

Nestjs 设置跨域

  • 配置文件
ts
# 开发环境配置

## 跨域设置

### 生产环境应指定具体的域名

CORS_ORIGIN = "http://127.0.0.1:5500"

### 跨域允许的方法

CORS_METHODS = "GET,HEAD,PUT,PATCH,DELETE,POST"

### 允许跨域的头部

CORS_HEADERS = "Origin,Accept,Authorization,X-Requested-With,Content-Type,Access-Control-Request-Method,Access-Control-Request-Headers"

### 是否允许携带凭证

CORS_CREDENTIALS = "true"

## 上传和系统文件

### 环境

APP_ENV = "development"

### 域名

APP_STATIC_DOMAIN = "http://localhost"

### 前缀

APP_PREFIX = ""

### 端口

APP_PORT = "5000"

### 日志存储地址

APP_LOG = "logs"

### 文件存储地址

APP_UPLOAD_PATH = "uploads"

### 静态文件存储地址

APP_STATIC = "public"

### 最大上传数量

APP_UPLOAD_MAX_FILE = 2

### 阿里云配置

OSS_AccessKeyId = ""

OSS_AccessKeySecret = ""

OSS_Region = "oss-cn-beijing"

OSS_Bucket = "jsopy-upload-oss"

#### 角色凭证

OSS_Arn = ""

## 数据库

### 写入数据库

DATABASE_URL = "xxxx"

### 读取数据库

DATABASE_READ_URL = "xxxx"

## Redis

REDIS_HOST = "xxx"

REDIS_PORT = 6379

REDIS_PASSWORD = "xxxx"

REDIS_DB = 0

REDIS_PREFIX = "meeting:"

REDIS_TTL = 3600

## JWT

JWT_SECRETKEY = "jsopy"

JWT_EXPIRESIN = "1h"

JWT_REFRESH_EXPIRESIN = "7d"

## 权限 白名单

PERMISSION_WHITELIST = /testproject/testcors,/testproject/testconfig,/testproject/testregister/jwt

## 拦截器白名单

INTERCEPTOR_WHITELIST = /testproject/testconfig,/testproject/testregister/jwt

main.js

ts
import { NestFactory } from "@nestjs/core";
import { AppModule } from "./app.module";
import * as requestIp from "request-ip";

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // 设置跨域
  app.enableCors({
    origin: process.env.CORS_ORIGIN || "*", // 生产环境应指定具体的域名
    methods: process.env.CORS_METHODS || "GET,HEAD,PUT,PATCH,POST,DELETE",
    allowedHeaders: process.env.CORS_HEADERS || "Content-Type, Accept",
    credentials: process.env.CORS_CREDENTIALS === "true", // 请确保实际字符串值是'true'或者'false'
  });
  // 获取真实 ip 存储到用户请求信息中得IP字段
  app.use(requestIp.mw({ attributeName: "ip" }));
  await app.listen(process.env.PORT ?? 5000);
}
bootstrap();