📖 Scenario: You are building a simple Node.js server that will serve data to a frontend running on a different domain. To allow the frontend to access your server's resources, you need to configure CORS (Cross-Origin Resource Sharing) properly.
🎯 Goal: Set up a Node.js server using Express and configure CORS to allow requests only from http://example.com.
📋 What You'll Learn
Create a basic Express server
Install and use the cors middleware
Configure CORS to accept requests only from http://example.com
Add a simple GET route that returns a JSON message
💡 Why This Matters
🌍 Real World
Many web applications have frontend and backend on different domains. Configuring CORS properly allows secure communication between them.
💼 Career
Backend developers often need to configure CORS to enable frontend apps to access APIs safely and correctly.
Progress0 / 4 steps
1
Set up Express server
Create a variable called express that requires the express package. Then create a variable called app by calling express().
Node.js
Hint
Use require('express') to import Express and call it to create the app.
2
Import and configure CORS middleware
Create a variable called cors that requires the cors package. Then create a variable called corsOptions that is an object with the key origin set to the string 'http://example.com'.
Node.js
Hint
Use require('cors') to import CORS and define corsOptions with the origin set to 'http://example.com'.
3
Apply CORS middleware with options
Use app.use() to apply the cors middleware with the corsOptions object as its argument.
Node.js
Hint
Call app.use() with cors(corsOptions) to enable CORS with your settings.
4
Add a GET route and start server
Add a GET route on '/' using app.get() that sends a JSON response with { message: 'Hello from server' }. Then start the server on port 3000 using app.listen().
Node.js
Hint
Use app.get() to create the route and app.listen(3000) to start the server.
Practice
(1/5)
1. What is the main purpose of configuring CORS in a Node.js server?
easy
A. To speed up server response time
B. To control which websites can access server resources
C. To encrypt data sent between client and server
D. To manage database connections
Solution
Step 1: Understand CORS role
CORS (Cross-Origin Resource Sharing) controls which external websites can request resources from your server.
Step 2: Identify main purpose
It is not about speed, encryption, or database management but about access control from different origins.
Final Answer:
To control which websites can access server resources -> Option B
Quick Check:
CORS controls access = A [OK]
Hint: Remember CORS = Cross-Origin Resource Sharing control [OK]
Common Mistakes:
Confusing CORS with encryption or speed optimization
Thinking CORS manages databases
Assuming CORS is a security firewall
2. Which of the following is the correct way to import and use the cors middleware in an Express app?
easy
A. import cors from 'cors'; app.use(cors());
B. import cors from 'cors'; app.use(cors);
C. const cors = require('cors'); app.use(cors);
D. const cors = require('cors'); app.use(cors());
Solution
Step 1: Identify modern import syntax
Using ES modules, the correct import is import cors from 'cors';.
Step 2: Use middleware correctly
Middleware must be called as a function: app.use(cors()); not just cors.
Final Answer:
import cors from 'cors'; app.use(cors()); -> Option A
Quick Check:
Import + call middleware = D [OK]
Hint: Use import + call cors() as function [OK]
Common Mistakes:
Forgetting parentheses when using middleware
Mixing require and import syntax
Using app.use(cors) without parentheses
3. Given this code snippet, what will be the CORS behavior?
import express from 'express';
import cors from 'cors';
const app = express();
app.use(cors({ origin: 'https://example.com' }));
app.get('/', (req, res) => res.send('Hello'));
app.listen(3000);
medium
A. Only requests from https://example.com will be allowed
B. Requests from any origin will be allowed
C. No requests will be allowed due to missing headers
D. Requests from localhost will be allowed only
Solution
Step 1: Analyze the origin option
The cors middleware is configured with origin: 'https://example.com', which restricts access to that origin only.
Step 2: Understand effect on requests
Requests from other origins will be blocked by CORS policy, so only https://example.com is allowed.
Final Answer:
Only requests from https://example.com will be allowed -> Option A
Quick Check:
origin restricts access = C [OK]
Hint: Check origin value to know allowed sites [OK]
Common Mistakes:
Assuming all origins allowed by default
Confusing origin with methods or headers
Thinking localhost is allowed without explicit mention
4. Regarding this CORS setup code, which statement is accurate?
import express from 'express';
import cors from 'cors';
const app = express();
app.use(cors({ origin: ['https://site1.com', 'https://site2.com'] }));
app.listen(3000);
medium
A. Missing call to cors() function
B. The app.listen() call is missing a callback
C. The origin option can be an array
D. The cors package is not imported correctly
Solution
Step 1: Check origin option type
The origin option in cors accepts an array directly for multiple static origins; it also supports string, boolean, regex, or function.
Step 2: Confirm other parts are correct
The cors() function is called correctly, app.listen() works without callback, and import syntax is valid.
Final Answer:
The origin option can be an array -> Option C
Quick Check:
origin array valid = B [OK]
Hint: origin can be string, array, regex, or function [OK]
Common Mistakes:
Thinking origin cannot accept an array
Forgetting to call cors() as a function
Thinking app.listen needs a callback always
5. You want to allow CORS requests only from https://trusted.com and http://localhost:3000. Which is the best way to configure the cors middleware in your Node.js app?
hard
A. Use origin as a function to check allowed origins dynamically
B. Set origin to '*' to allow all origins
C. Disable CORS middleware and handle manually
D. Set origin to an array of allowed origins directly
Solution
Step 1: Understand multiple origins handling
The cors package accepts an array directly for origin with a static list of allowed origins. This is the simplest and best approach here.
Step 2: Evaluate options
Use function for dynamic logic (e.g., regex or env-based). '*' allows all (insecure). Manual handling is error-prone and not recommended.
Final Answer:
Set origin to an array of allowed origins directly -> Option D
Quick Check:
Static multiple origins use array = C [OK]
Hint: Use array for static multiple origins [OK]
Common Mistakes:
Using '*' to allow all origins insecurely
Using a single string for multiple origins
Disabling middleware instead of configuring properly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.