caddy-website/src/docs/markdown/caddyfile/directives/respond.md

2 KiB

title
respond (Caddyfile directive)

respond

Writes a hard-coded/static response to the client.

If the body is non-empty, this directive sets the Content-Type header if it is not already set. The default value is text/plain; utf-8 unless the body is a valid JSON object or array, in which case it is set to application/json. For all other types of content, set the proper Content-Type explicitly using the header directive.

Syntax

respond [<matcher>] <status>|<body> [<status>] {
	body <text>
	close
}
  • <status> is the HTTP status code to write. If 103 (Early Hints), the response will be written without a body and the handler chain will continue. (HTTP 1xx responses are informational, not final.) Default: 200.

  • <body> is the response body to write.

  • body is an alternate way to provide a body; convenient if it is multiple lines.

  • close will close the client's connection to the server after writing the response.

To clarify, the first non-matcher argument can be either a 3-digit status code or a response body string. If it is a body, the next argument can be the status code.

Examples

Write a 200 status with an empty body to all health checks:

respond /health-check 200

Write a simple response body to all requests:

respond "Hello, world!"

Write an error response and close the connection:

respond /secret/* "Access denied" 403 {
	close
}

Write an HTML response, using heredoc syntax to control whitespace, and also setting the Content-Type header to match the response body:

header Content-Type text/html
respond <<HTML
	<html>
	  <head><title>Foo</title></head>
	  <body>Foo</body>
	</html>
	HTML 200