A. The request will be redirected to 'example.com'
B. The request will succeed and return 'Hello World'
C. The app will crash with an exception
D. The request will be blocked with a 400 Bad Request error
Solution
Step 1: Check allowed hosts list
The allowed hosts are 'example.com' and 'localhost'. 'malicious.com' is not in this list.
Step 2: Understand middleware behavior on unknown hosts
TrustedHostMiddleware blocks requests from hosts not in the allowed list by returning a 400 error.
Final Answer:
The request will be blocked with a 400 Bad Request error -> Option D
Quick Check:
Unknown host causes 400 error = A [OK]
Hint: Requests from hosts not allowed get 400 error [OK]
Common Mistakes:
Assuming the request passes through
Thinking the app crashes on unknown hosts
Believing the request is redirected automatically
4. Identify the error in this FastAPI app setup using TrustedHostMiddleware:
from fastapi import FastAPI
from starlette.middleware.trustedhost import TrustedHostMiddleware
app = FastAPI()
app.add_middleware(TrustedHostMiddleware, allowed_hosts='example.com')
@app.get('/')
def home():
return {'msg': 'Welcome'}
medium
A. The route function must be async
B. TrustedHostMiddleware is not imported correctly
C. allowed_hosts should be a list, not a string
D. Missing middleware initialization parameters
Solution
Step 1: Check allowed_hosts argument type
The allowed_hosts parameter expects a list of strings, but a single string was given.
Step 2: Understand impact of wrong type
Passing a string instead of a list will cause the middleware to treat each character as a host, leading to incorrect behavior or errors.
Final Answer:
allowed_hosts should be a list, not a string -> Option C
Quick Check:
allowed_hosts must be list = A [OK]
Hint: allowed_hosts always needs a list, not a string [OK]
Common Mistakes:
Passing a single string instead of list
Thinking route functions must be async
Assuming import is incorrect without error
5. You want to allow requests from any subdomain of example.com and also from localhost. Which allowed_hosts list correctly configures TrustedHostMiddleware for this?
hard
A. ['*.example.com', 'localhost']
B. ['example.com', 'localhost']
C. ['example.com/*', 'localhost']
D. ['*example.com', 'localhost']
Solution
Step 1: Understand wildcard usage in allowed_hosts
TrustedHostMiddleware supports wildcards like *.example.com to allow all subdomains.
Step 2: Check each option for correct wildcard syntax
['*.example.com', 'localhost'] uses '*.example.com' which correctly matches all subdomains; others use incorrect patterns.
Final Answer:
['*.example.com', 'localhost'] -> Option A
Quick Check:
Use '*.example.com' for subdomains = B [OK]
Hint: Use '*.domain.com' to allow all subdomains [OK]
Common Mistakes:
Using 'example.com/*' which is invalid
Using '*example.com' missing dot after *
Not using wildcard for subdomains
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.