mg_response_header_start( conn, status );
mg_response_header_add( conn, header, value, value_len );
mg_response_header_add_lines( conn, http1_headers );
mg_response_header_send( conn );
Parameter | Type | Description |
---|---|---|
conn |
struct mg_connection * |
The server is sending a response to this connection |
status |
int |
HTTP status code to send (100-599) |
header |
const char * |
HTTP header name |
value |
const char * |
HTTP header value |
value_len |
int |
Length of HTTP header value. -1 will use the entire value string. |
http1_headers |
const char * |
String in format "Key: Value\r\nKey2: Value2" |
| Type | Description |
|int
| An integer indicating success (>=0) or failure (<0). |
|-1
| Error: Invalid parameter (e.g., NULL pointer or value out of range) |
|-2
| Error: Invalid connection type. These functions must only be used in web server request handlers. |
|-3
| Error: Invalid connection status. These functions must be used before mg_send()
or mg_printf()
functions. |
|-4
| Error: Too many headers. The total number of header lines is limited to MG_MAX_HEADERS (default: 64). |
|-5
| Error: Out of memory. |
The mg_response_header_*
family of functions can be used to send HTTP response headers from a web server handler function.
Do not use it for HTTP clients or websockets. When using mg_response_header_*
functions, they must be used to send all HTTP headers - combining mg_response_header_*
functions and mg_send_*
/mg_write
/mg_printf
to send HTTP headers is not possible.
After sending HTTP headers, HTTP body data is still sent using mg_write
/mg_printf
.
All mg_response_header_*
functions must be used prior to any call to mg_write
/mg_printf
, in the following order:
1) mg_response_header_start
(once)
2) mg_response_header_add
(0 - 64 times), alternatively mg_response_header_add_lines
. The preferred function is mg_response_header_add
. The function mg_response_header_add_lines
can process HTTP/1.x formatted header lines and is used for compatibility.
3) mg_response_header_send
(once)
4) mg_write
or mg_printf
(multiple) to send the HTTP body
Using mg_response_header_*
functions will allow a request handler to process HTTP/1.x and HTTP/2 requests, in contrast to sending HTTP headers directly using mg_printf
/mg_write
.