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/jwtmain.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();