Ensure code adheres to HTTP protocol standards and handles different protocol versions correctly. This includes respecting protocol limitations, using appropriate status codes, and implementing proper fallbacks.
Ensure code adheres to HTTP protocol standards and handles different protocol versions correctly. This includes respecting protocol limitations, using appropriate status codes, and implementing proper fallbacks.
Key considerations:
Example implementation:
// Good: Check protocol version before setting status message
export async function toNodeRequest(res: Response, nodeRes: ServerResponse) {
nodeRes.statusCode = res.status;
// HTTP/2 doesn't support status messages
// https://datatracker.ietf.org/doc/html/rfc7540#section-8.1.2.4
if (nodeRes.httpVersion !== '2.0') {
nodeRes.statusMessage = res.statusText;
}
}
// Good: Use reliable endpoint for health checks
await waitOn({
resources: [
`http://${args.host ?? "localhost"}:${args.port}${args.basename ?? "/favicon.ico"}`,
]
});
// Good: Handle redirect status codes with appropriate fallbacks
if (redirectStatusCodes.has(response.status)) {
let location = response.headers.get("Location");
let delay = response.status === 302 ? 2 : 0;
// Implement meta refresh fallback
}
This ensures network communication follows established protocols and handles edge cases gracefully across different HTTP versions and scenarios.
Enter the URL of a public GitHub repository