mirror of
https://github.com/caddyserver/website.git
synced 2025-04-24 05:56:15 -04:00
68 lines
2 KiB
Markdown
68 lines
2 KiB
Markdown
---
|
|
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](/docs/caddyfile/directives/header).
|
|
|
|
|
|
## Syntax
|
|
|
|
```caddy-d
|
|
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.
|
|
|
|
<aside class="tip">
|
|
Responding with an error status code is different than returning an error in the handler chain, which invokes error handlers internally.
|
|
</aside>
|
|
|
|
|
|
## Examples
|
|
|
|
Write a 200 status with an empty body to all health checks:
|
|
|
|
```caddy-d
|
|
respond /health-check 200
|
|
```
|
|
|
|
Write a simple response body to all requests:
|
|
|
|
```caddy-d
|
|
respond "Hello, world!"
|
|
```
|
|
|
|
Write an error response and close the connection:
|
|
|
|
```caddy-d
|
|
respond /secret/* "Access denied" 403 {
|
|
close
|
|
}
|
|
```
|
|
|
|
Write an HTML response, using [heredoc syntax](/docs/caddyfile/concepts#heredocs) to control whitespace, and also setting the `Content-Type` header to match the response body:
|
|
|
|
```caddy-d
|
|
header Content-Type text/html
|
|
respond <<HTML
|
|
<html>
|
|
<head><title>Foo</title></head>
|
|
<body>Foo</body>
|
|
</html>
|
|
HTML 200
|
|
```
|