☰ Mục lục series
Tài liệu NestJS tiếng Việt
  1. Nhập môn (Overview)
    1. Giới thiệu
    2. First steps
    3. Controllers
    4. Providers
    5. Modules
    6. Middleware
    7. Exception filters
    8. Pipes
    9. Guards
    10. Interceptors
    11. Custom decorators
  2. Nền tảng (Fundamentals)
    1. Custom providers
    2. Asynchronous providers
    3. Dynamic modules
    4. Injection scopes
    5. Circular dependency
    6. Module reference
    7. Lazy-loading modules
    8. Execution context
    9. Lifecycle events
    10. Discovery service
    11. Platform agnosticism
    12. Testing
  3. Kỹ thuật (Techniques)
    1. Configuration
    2. Database (SQL)
    3. MongoDB
    4. Validation
    5. Caching
    6. Serialization
    7. Versioning
    8. Task scheduling
    9. Queues
    10. Logging
    11. Cookies
    12. Events
    13. Compression
    14. File upload
    15. Streaming files
    16. HTTP module
    17. Session
    18. MVC
    19. Performance (Fastify)
    20. Server-Sent Events
  4. Bảo mật (Security)
    1. Authentication
    2. Authorization
    3. Encryption & Hashing
    4. Helmet
    5. CORS
    6. CSRF
    7. Rate limiting
    8. Vòng đời request
  5. OpenAPI (Swagger)
    1. Introduction
    2. Types and parameters
    3. Operations
    4. Security
    5. Mapped types
    6. Decorators
    7. CLI plugin
    8. Other features
  6. Recipes
    1. REPL
    2. CRUD generator
    3. SWC (fast compiler)
    4. Passport (auth)
    5. Hot reload
    6. MikroORM
    7. Router module
    8. Health checks (Terminus)
    9. CQRS
    10. Prisma
    11. Serve static
    12. Commander
    13. Async local storage
  7. WebSockets
    1. Gateways
    2. Exception filters
    3. Pipes
    4. Guards
    5. Interceptors
    6. Adapters
  8. Microservices
    1. Overview
    2. Redis
    3. MQTT
    4. NATS
    5. RabbitMQ
    6. Kafka
    7. gRPC
    8. Custom transporters
    9. Exception filters
    10. Pipes
    11. Pre-request hooks
    12. Guards
    13. Interceptors
  9. GraphQL
    1. Quick start
    2. Resolvers
    3. Mutations
    4. Subscriptions
    5. Scalars
    6. Directives
    7. Interfaces
    8. Unions and enums
    9. Field middleware
    10. Mapped types
    11. Plugins
    12. Complexity
    13. Extensions
    14. CLI plugin
    15. Generating SDL
    16. Sharing models
    17. Other features
    18. Federation
  10. CLI & triển khai
    1. CLI overview
    2. Workspaces
    3. Libraries
    4. Usage
    5. Scripts
    6. Deployment
    7. Standalone apps
  11. FAQ
    1. Serverless
    2. HTTP adapter
    3. Keep-Alive connections
    4. Global path prefix
    5. Raw body
    6. Hybrid application
    7. HTTPS & multiple servers
    8. Common errors
  12. Phụ lục
    1. Bảng thuật ngữ
Bảo mật (Security)

CORS

Bản dịch từ docs.nestjs.com/security/cors

Cross-origin resource sharing (CORS — chia sẻ tài nguyên giữa các nguồn gốc khác nhau) là một cơ chế cho phép request tài nguyên từ một domain khác. Bên dưới, Nest sử dụng package cors của Express hoặc @fastify/cors của Fastify tùy theo nền tảng bạn dùng. Các package này cung cấp nhiều option mà bạn có thể tùy chỉnh theo yêu cầu của mình.

Bắt đầu

Để bật CORS, gọi method enableCors() trên application object của Nest.

const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(process.env.PORT ?? 3000);

Method enableCors() nhận một configuration object tùy chọn làm tham số. Các property khả dụng của object này được mô tả trong tài liệu chính thức về CORS. Một cách khác là truyền vào một callback function, cho phép bạn định nghĩa configuration object một cách bất đồng bộ dựa theo request (xử lý tại thời điểm request tới).

Ngoài ra, bạn có thể bật CORS thông qua options object của method create(). Đặt property cors thành true để bật CORS với cấu hình mặc định. Hoặc, truyền một CORS configuration object hoặc callback function làm giá trị cho property cors để tùy chỉnh hành vi của nó.

const app = await NestFactory.create(AppModule, { cors: true });
await app.listen(process.env.PORT ?? 3000);

Ghi chú người dịch Nếu bạn đã quen CORS qua middleware cors của Express hay package github.com/rs/cors trong Go, thì enableCors() của Nest chỉ là một lớp mỏng gọi lại đúng package đó bên dưới — không có logic CORS riêng của Nest. Vì vậy mọi option (origin, credentials, methods…) bạn tra trong doc của cors/@fastify/cors đều áp dụng nguyên vẹn ở đây.

Nội dung gốc: NestJS Documentation © Kamil Myśliwiec, giấy phép MIT. Bản dịch và ghi chú: Lê Văn Dũng.