Concept Flow - CORS configuration
Client sends request
Server receives request
Check Origin header
Add CORS headers
Send response
The server checks the request origin and adds CORS headers if allowed, enabling the browser to accept the response.
import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableCors({ origin: 'https://example.com' }); await app.listen(3000); } bootstrap();
| Step | Action | Request Origin | CORS Allowed? | CORS Headers Added | Response Behavior |
|---|---|---|---|---|---|
| 1 | Client sends request | https://example.com | Yes | Access-Control-Allow-Origin: https://example.com | Response accepted by browser |
| 2 | Client sends request | https://notallowed.com | No | No CORS headers | Browser blocks response |
| 3 | Client sends request | No Origin header | No | No CORS headers | Browser blocks response or no CORS needed |
| 4 | Server listens on port 3000 | - | - | - | Ready to handle requests |
| Variable | Start | After Request 1 | After Request 2 | After Request 3 | Final |
|---|---|---|---|---|---|
| origin | undefined | https://example.com | https://notallowed.com | undefined | varies per request |
| corsAllowed | false | true | false | false | varies per request |
| corsHeadersAdded | false | true | false | false | varies per request |
NestJS CORS configuration:
- Use app.enableCors() in bootstrap
- Pass options like { origin: 'https://example.com' }
- Server checks request Origin header
- Adds Access-Control-Allow-Origin if allowed
- Browser blocks responses without proper CORS headers
- Helps secure cross-origin requests