Bird
Raised Fist0
Expressframework~5 mins

Preflight requests behavior in Express - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a preflight request in the context of CORS?
A preflight request is an HTTP OPTIONS request sent by the browser before the actual request. It checks if the server allows the real request with specific methods and headers.
Click to reveal answer
beginner
Which HTTP method is used for preflight requests?
The HTTP OPTIONS method is used for preflight requests to ask the server about allowed methods and headers.
Click to reveal answer
intermediate
How does Express handle preflight requests by default?
Express does not handle preflight requests automatically. You need to add middleware like 'cors' to respond properly to OPTIONS requests.
Click to reveal answer
intermediate
What headers are important in a preflight request and response?
Important headers include 'Access-Control-Request-Method' and 'Access-Control-Request-Headers' in the request, and 'Access-Control-Allow-Methods' and 'Access-Control-Allow-Headers' in the response.
Click to reveal answer
beginner
Why is handling preflight requests important in Express apps?
Handling preflight requests ensures browsers can verify permissions before sending actual requests, preventing CORS errors and enabling cross-origin communication.
Click to reveal answer
Which HTTP method does the browser use to send a preflight request?
AOPTIONS
BGET
CPOST
DPUT
In Express, what middleware is commonly used to handle CORS and preflight requests?
Aexpress-session
Bbody-parser
Ccors
Dhelmet
Which header does the browser send to specify the HTTP method it wants to use in the actual request during preflight?
AAccess-Control-Expose-Headers
BAccess-Control-Allow-Methods
CAccess-Control-Allow-Origin
DAccess-Control-Request-Method
What should the server include in the response to a preflight request to allow a POST method?
AAccess-Control-Allow-Methods: POST
BAccess-Control-Allow-Origin: POST
CAccess-Control-Request-Method: POST
DAccess-Control-Allow-Headers: POST
If an Express app does not handle preflight requests, what will happen when a browser sends a cross-origin request with custom headers?
AThe request will succeed without issues
BThe browser will block the request due to CORS error
CThe server will automatically respond with CORS headers
DThe browser will ignore CORS and send the request
Explain what a preflight request is and why it is important in Express applications.
Think about how browsers ask servers if they can send certain requests.
You got /4 concepts.
    Describe the key headers involved in preflight requests and responses.
    Focus on headers that specify methods and headers allowed.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a preflight request in Express when handling cross-origin requests?
      easy
      A. To check if the server allows the actual request method and headers before sending it
      B. To send the actual data to the server immediately
      C. To close the connection after the first request
      D. To authenticate the user credentials

      Solution

      1. Step 1: Understand preflight request role

        A preflight request uses the OPTIONS method to ask the server if the actual request is safe to send.
      2. Step 2: Identify what preflight checks

        It checks allowed methods and headers to prevent unauthorized cross-origin requests.
      3. Final Answer:

        To check if the server allows the actual request method and headers before sending it -> Option A
      4. Quick Check:

        Preflight checks permissions = B [OK]
      Hint: Preflight = permission check before real request [OK]
      Common Mistakes:
      • Thinking preflight sends actual data
      • Confusing preflight with authentication
      • Assuming preflight closes connection
      2. Which Express method is used to handle preflight OPTIONS requests?
      easy
      A. app.options()
      B. app.post()
      C. app.get()
      D. app.use()

      Solution

      1. Step 1: Recall HTTP methods in Express

        Express provides methods matching HTTP verbs like get, post, options, etc.
      2. Step 2: Identify method for preflight

        Preflight requests use the OPTIONS method, so Express uses app.options() to handle them.
      3. Final Answer:

        app.options() -> Option A
      4. Quick Check:

        OPTIONS method handled by app.options() [OK]
      Hint: Preflight uses OPTIONS, so use app.options() [OK]
      Common Mistakes:
      • Using app.get() or app.post() for OPTIONS requests
      • Confusing app.use() as handler for OPTIONS
      • Not handling OPTIONS method at all
      3. Consider this Express code snippet handling CORS preflight:
      app.options('/data', (req, res) => {
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Methods', 'GET,POST');
        res.sendStatus(204);
      });
      What will the server respond to an OPTIONS request to '/data'?
      medium
      A. Status 404 Not Found
      B. Status 204 with headers allowing any origin and GET, POST methods
      C. Status 200 with no headers
      D. Status 500 Internal Server Error

      Solution

      1. Step 1: Analyze headers set in response

        The code sets 'Access-Control-Allow-Origin' to '*' allowing any origin, and 'Access-Control-Allow-Methods' to 'GET,POST'.
      2. Step 2: Check response status

        res.sendStatus(204) sends HTTP status 204 (No Content) with the headers.
      3. Final Answer:

        Status 204 with headers allowing any origin and GET, POST methods -> Option B
      4. Quick Check:

        Preflight responds 204 + CORS headers = C [OK]
      Hint: 204 status with CORS headers means preflight success [OK]
      Common Mistakes:
      • Expecting status 200 instead of 204
      • Missing CORS headers in response
      • Confusing 404 or 500 errors
      4. You wrote this Express code to handle preflight requests:
      app.options('/api', (req, res) => {
        res.header('Access-Control-Allow-Origin', 'https://example.com');
        res.header('Access-Control-Allow-Methods', 'GET, POST, PUT');
        res.end();
      });
      But the browser still blocks the actual request. What is the likely problem?
      medium
      A. Access-Control-Allow-Origin should be '*'
      B. Using res.end() instead of res.sendStatus(204)
      C. Missing Access-Control-Allow-Headers header for custom headers
      D. Incorrect URL path in app.options()

      Solution

      1. Step 1: Understand preflight header requirements

        If the actual request uses custom headers, the server must respond with Access-Control-Allow-Headers listing them.
      2. Step 2: Check code for missing headers

        The code does not set Access-Control-Allow-Headers, so browser blocks the request due to missing allowed headers.
      3. Final Answer:

        Missing Access-Control-Allow-Headers header for custom headers -> Option C
      4. Quick Check:

        Missing allowed headers header blocks request = D [OK]
      Hint: Always include Access-Control-Allow-Headers if custom headers used [OK]
      Common Mistakes:
      • Assuming res.end() causes the block
      • Thinking Access-Control-Allow-Origin must be '*' always
      • Ignoring missing allowed headers header
      5. You want to allow cross-origin requests only from 'https://trusted.com' with methods GET and POST, and allow custom header 'X-Custom-Auth'. Which Express preflight handler is correct?
      hard
      A. app.options('/resource', (req, res) => { res.header('Access-Control-Allow-Origin', 'https://trusted.com'); res.header('Access-Control-Allow-Headers', 'X-Custom-Auth'); res.sendStatus(404); });
      B. app.options('/resource', (req, res) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET, POST, PUT'); res.sendStatus(200); });
      C. app.options('/resource', (req, res) => { res.header('Access-Control-Allow-Origin', 'https://trusted.com'); res.header('Access-Control-Allow-Methods', 'GET'); res.sendStatus(204); });
      D. app.options('/resource', (req, res) => { res.header('Access-Control-Allow-Origin', 'https://trusted.com'); res.header('Access-Control-Allow-Methods', 'GET, POST'); res.header('Access-Control-Allow-Headers', 'X-Custom-Auth'); res.sendStatus(204); });

      Solution

      1. Step 1: Match allowed origin and methods

        app.options('/resource', (req, res) => { res.header('Access-Control-Allow-Origin', 'https://trusted.com'); res.header('Access-Control-Allow-Methods', 'GET, POST'); res.header('Access-Control-Allow-Headers', 'X-Custom-Auth'); res.sendStatus(204); }); sets Access-Control-Allow-Origin to 'https://trusted.com' and methods to 'GET, POST' as required.
      2. Step 2: Include custom headers and correct status

        It includes Access-Control-Allow-Headers for 'X-Custom-Auth' and sends status 204 (No Content), which is correct for preflight.
      3. Final Answer:

        app.options('/resource', (req, res) => { res.header('Access-Control-Allow-Origin', 'https://trusted.com'); res.header('Access-Control-Allow-Methods', 'GET, POST'); res.header('Access-Control-Allow-Headers', 'X-Custom-Auth'); res.sendStatus(204); }); -> Option D
      4. Quick Check:

        Correct origin, methods, headers, and 204 status = A [OK]
      Hint: Include origin, methods, headers, and send 204 for preflight [OK]
      Common Mistakes:
      • Using '*' origin when only one domain allowed
      • Missing Access-Control-Allow-Headers for custom headers
      • Sending wrong status code like 200 or 404
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard