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.